内容摘要:DB2 SQL存储过程语法
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
责编:豆豆技术应用
正在加载评论...