DB2 SQL存储过程语法官方权威指南

 
创建 SQL 存储过程 (CREATE PROCEDURE (SQL) statement )
  语法格式如下:
>>-CREATE PROCEDURE--procedure-name----------------------------->
>--+----------------------------------------------------+--*---->
  '-(--+------------------------------------------+--)-'
      | .-,------------------------------------. |
      | V .-IN----.                     | |
      '---+-------+--parameter-name--data-type-+-'
        +-OUT---+
        '-INOUT-'
>--+-------------------------+--*------------------------------->
  '-SPECIFIC--specific-name-'
  .-DYNAMIC RESULT SETS 0--------.     .-MODIFIES SQL DATA-.
>--+------------------------------+--*--+-------------------+--->
  '-DYNAMIC RESULT SETS--integer-'     +-CONTAINS SQL------+
                            '-READS SQL DATA----'
    .-NOT DETERMINISTIC-.     .-CALLED ON NULL INPUT-.
>--*--+-------------------+--*--+----------------------+--*----->
    '-DETERMINISTIC-----'
  .-INHERIT SPECIAL REGISTERS-.     .-7 OLD SAVEPOINT LEVEL-.
>--+---------------------------+--*--+---------------------+---->
                          '-7 NEW SAVEPOINT LEVEL-'
    .-LANGUAGE SQL-.     .-7 EXTERNAL ACTION----.
>--7 *--+--------------+--*--+--------------------+--*------------>
                  '-7 NO EXTERNAL ACTION-'
>--+------------------------------+--3 *-------------------------->
  '-3 PARAMETER CCSID--+-3 ASCII---+-'
                '-3 UNICODE-'
>--| SQL-procedure-body |--------------------------------------><
SQL-procedure-body:
|--SQL-procedure-statement--------------------------------------|
   语法说明
   1 procedure-name: 存储过程的名字,在同一个数据库的同一模式下,不能存在存储过程名相同参数数目相同的存储过程,即使参数的类型不同也不行。
   2 (IN | OUT | INOUT parameter-name data-type,...) :传入参数
·                              IN :输入参数
·                              OUT :输出参数
·                              INOUT :作为输入输出参数
·                              parameter-name :参数名字,在此存储过程中唯一的标识符。
·                              data-type: 参数类型,可以接收 SQL 类型和创建的表。不支持 LONG VARCHAR, LONG VARGRAPHIC, DATALINK, REFERENCE 和用户自定义类型。
   3 SPECIFIC specific-name :唯一的特定名称 ( 别名 ) ,可以用存储过程名代替,这个特定名称用于 dorp 存储过程,或者给存储过程添加注视
  用,但不能调用存储过程。如果不指定,则数据库会自动生成一个 yymmddhhmmsshhn 时间戳的名字。推荐给出别名。
   4 DYNAMIC RESULT SETS integer :指定存储过程返回结果的最大数量。存储过程中虽然没有 return 语句,但是却能返回结果集。
   5 CONTAINS SQL, READS SQL DATA, MODIFIES SQL DATA 指定存储过程中的 SQL 访问级别
   CONTAINS SQL 表示存储过程可以执行中,既不可读取 SQL 数据,也不可修改 SQL 数据。
   READS SQL DATA 表示存储过程可以执行中,可读取 SQL ,但不可修改 SQL 数据。
   MODIFIES SQL DATA 表示存储过程可以执行任何 SQL 语句。可以对数据库中的数据进行增加、删除和修改。
   6 DETERMINISTIC or NOT DETERMINISTIC :表示存储过程是动态或者非动态的。动态的返回的值是不确定的。非动态的存储过程每次执行返回的值是相同的。
   7 CALLED ON NULL INPUT :表示可以调用存储过程而不管任何的输入参数是否为 NULL ,并且,任何的 OUT 或者 INOUT 参数可以返回一个 NULL 或者非空值。检验参数是否为 NULL 是在过程中进行的。
   8 INHERIT SPECIAL REGISTERS :表示继承专用寄存器。
   9 OLD SAVEPOINT LEVEL or NEW SAVEPOINT LEVEL :建立存储点。 OLD SAVEPOINT LEVEL 是默认的存储点。
   10 LANGUAGE SQL :指定程序的主体用的是 SQL 语言。
   11 EXTERNAL ACTION or NO EXTERNAL ACTION :表示存储过程是否执行一些改变理数据库状态的活动,而不通过数据库管理器管。默认是
   EXTERNAL ACTION 。如果指定为 NO EXTERNAL ACTION , 则数据库会确定最最佳优化方案。
   12 PARAMETER CCSID :指定所有输出字符串数据的编码 , 默认为 UNICODE 编码数据库为 PARAMETER CCSID UNICODE ,其他的数据库默认为 PARAMETER CCSID 3 ASCII
   13 SQL-procedure-body :存储过程的主体
  例子 1 :产生一个 SQL 存储过程,返回员工的平均薪水 . 返回所有员工超过平均薪水的数额,结果集包括 name, position, and salary 字段 ( 参考数据库为 db2 的示例数据库 sample)  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值