分享
 
 
 

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

王朝mssql·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

创建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--------------------------------------|语法说明

123下一页

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是在过程中进行的。

上一页123下一页

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)。CREATEPROCEDUREMEDIAN_RESULT_SET(OUTmedianSalaryDOUBLE)

RESULTSETS1

LANGUAGESQL

BEGIN

DECLAREv_numRecordsINTDEFAULT1;

DECLAREv_counterINTDEFAULT0;

DECLAREc1CURSORFOR

SELECTCAST(salaryASDOUBLE)

FROMstaff

ORDERBYsalary;

DECLAREc2CURSORWITHRETURNFOR

SELECTname,job,CAST(salaryASINTEGER)

FROMstaff

WHEREsalary>medianSalary

ORDERBYsalary;

DECLAREEXITHANDLERFORNOTFOUND

SETmedianSalary=6666;

SETmedianSalary=0;

SELECTCOUNT(*)INTOv_numRecords

FROMSTAFF;

OPENc1;

WHILEv_counter<(v_numRecords/2+1)

DO

FETCHc1INTOmedianSalary;

SETv_counter=v_counter+1;

ENDWHILE;

CLOSEc1;

OPENc2;

END

上一页123

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有