• Procedure 存储过程


    本文非原创

    存储过程是数据库当中最高级的应用程序,可以传递参数和返回相应的值。

    1.分为:系统存储过程和自定义存储过程
    定义:它是由一系列的预编译的SQL语句和流程控制语句组成的,
    具有参数的传递、条件的判断、变量的声明、返回处理结果,
    并扩充了SQL语句的功能。

    优点:(1)使用它可以比单独使用SQL语句实现更复杂的功能。

    (2)它的执行速度要比普通的SQL语句执行的速度要快。


    缺点:(1)不能实现复杂的逻辑操作,因为它不能提供复杂的程序设计。

    (2)存储过程创建后,管理较困难,需要记住每个过程的功能。

    2.创建存储过程:

    创建方式: A.用企业管理器 B.使用代码建立


    (1)使用语言创建:

    语法: create procedure 存储过程名 [,整数]
    [@参数 数据类型] [varying] [=默认值] [output] [n]
    [with {recompile / encryption /recompile,encryption}]

    例:(1)create procedure st_cus
    as
    select 顶单好,姓名,踪迹呢,定货日期,踪迹呢
    from AA as a join orders as b on a.客户编号=b.可湖编号
    where b.货品名称='desk'
    go
    execute st_cus
    go



    (2)create procedure st_ord
    @goodsname varchar(20)
    as
    select * from AA as a join orders as b
    on a.客户编号=b.可湖编号
    where b.货品名称 =@goodsname
    go
    execute st_ord'desk'
    go


    说明:1. varying:该参数指定作为输出参数,支持的结果集适用于游标。

    2. output:定义一个输出参数,将处理后的信息返回给调用者。

    3. 参数:所有数据类型(包括text,ntext,image)均可以作为
    存储过程的参数;但cursor数据类型只能用于output
    参数,如果指定数据类型为cursor,则必须同时指定
    varying和output参数,对cursor型参数个数无限制。

    4.局部临时过程:只能创建该过程的连接使用,在会话结束时,
    自动除去,加“#”。

    全局临时过程:可以由所有连接使用,在使用该过程的最后
    一个会话结束时,一般情况是创建该过程的
    会话结束,加“##”。


    注意:不能把 create procedure 和其它的SQL语句组合
    到一个批处理中,不要和系统重名。


    执行存储过程:


    存储过程的执行可以由应用程序来调用执行,用户可以声明变量和有条件的执行。


    1.执行时可以用execute来执行:

    语法:execute {[@整数变量=] 存储过程名 [;标识号]}
    [@参数名=值/@变量 [output/default]] [,……n]
    [with recompile]

    例:(1)create procedure st_count
    @goodname varchar(20),
    @maxdata int output,
    @avgprice int output
    as
    select @maxdata=max(哭春量),@avgprice=avg(价格)
    from goods where 货品名称=@goodname
    go
    declare @aa varchar(20)
    declare @bb int
    declare @cc int
    select @aa='desk'
    execute st_count @aa,@bb output,@cc output
    select '货品名称'+@aa,'最大货品库存量:'+
    cast(@bb as char(6)),'货品平均价格:'+cast(@cc as char(4))

    (2) create procedure egg_pro
    @name varchar(23)='hh',
    @max int output,
    @min int output
    as
    select @max=max(egg_zhong),@min=avg(egg_jia)from egg
    where egg_name=@name
    go
    declare @aa int,@bb int
    execute egg_pro @min=@bb output,@max=@aa output,@name=default
    print @aa
    print @bb

    说明:1.整数变量是用来保存过程的返回状态,在使用之前需要声明。

    2.参数名:执行时参数赋值的顺序要符合,创建过程顺序相同,
    如果采用“@参数名=值”的格式,则所有的参数都
    必须使用此种格式,顺序可以和原来不同,如果有
    默认值,可以用“default”来调用。

    3.参数值:如果给字符型和日期型参数赋值,则要加上单引号。

    4.output:指定存储过程的返回参数,返回给调用者。

  • 相关阅读:
    Eclipse svn插件包
    最新版STS因为JDK版本太低无法启动的解决办法
    maven 项目无法发布,无法编译的解决办法
    maven依赖本地非repository中的jar包
    微信公众平台开发(2)-消息封装
    微信公众平台开发(4)-自定义菜单
    限制必须使用微信打开网页
    移动设备页面自适应
    微信公众平台开发(5)-上传下载多媒体文件
    微信公众平台开发(3)-回复消息
  • 原文地址:https://www.cnblogs.com/xieyuanzheng/p/5597070.html
Copyright © 2020-2023  润新知