DB2中建立存储过程的详细参数和语法
发布网友
发布时间:2022-04-20 01:36
我来回答
共2个回答
热心网友
时间:2022-04-08 10:08
DECLARE CHOICE2 CURSOR WITH RETURN TO CALLER FOR --声明游标 CHOICE2
SELECT COMPANYID,DEPTID,SEQID,SUBMITTIME,SUBMITDATE,
B.GRADEDESC HYEAR,PRODUCTID,PRODUCTCODE,PRODUCTDESC,
A.GRADEID,PRICE,SFZDPY,LQUANT,MQUANT,MCQUANT,LCQUANT,
UQUANT,OTHQUANT1,OTHQUANT2,OTHQUANT3,OTHQUANT4,EMP1,EMP2,STATUS,A.REMARK,
DECIMAL(ABS(MCQUANT-MQUANT)/NULLIF(MQUANT,0)*100,10,2)TAG
FROM T_SUPPLY_PPB_HY A
LEFT JOIN T_SUPPLY_GRADATION B ON A.GRADEID=B.GRADEID
WHERE HYEAR=TO_CHAR(P_NF)||P_BN
ORDER BY B.GRADEID,PRODUCTCODE,A.PRICE;
--1.DECIMAL(P,S)十进制数,小数点位置由数字的精度(P)和小数位(S)确定。
-- 精度是数字的总位数,必须小于32。小数位是小数部分数字的位数且总是小于或等于精度值。
-- 如果未指定精度和小数位,则十进制值的缺省精度为5,缺省小数位为0。
--2.语法:NULLIF ( expression , expression )
-- expression:(常量、列名、函数、子查询或算术运算符、按位运算符以及字符串运算符的任意组)
-- 如果两个表达式不相等,NULLIF 返回第一个 expression 的值。如果相等,NULLIF 返回第一个 expression 类型的空值。如果两个表达式相等且结果表达式为 NULL,NULLIF 等价于 CASE 的搜索函数。
热心网友
时间:2022-04-08 11:26
SET SCHEMA DB2INST1;
SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","DB2INST1";
设置 模式和函数
CREATE PROCEDURE CRFM.P_CRFM_PPB_CGB_YCSSC --在服务器上注册一个存储过程 CRFM 模式下的 P_CRFM_PPB_CGB_YCSSC 过程
(IN P_NF INTEGER, --输入参数 大型整数 精度10位 (OUT:输出参数 ,INOUT:作为输入输出参数 )
IN P_BN VARCHAR(6), --输入参数 变长字符串 长度为6
IN P_NF1 INTEGER, --输入参数 大型整数 精度10位
IN P_BN1 VARCHAR(6), --输入参数 变长字符串 长度为6
IN P_NF2 INTEGER, --输入参数 大型整数 精度10位
IN P_BN2 VARCHAR(6), --输入参数 变长字符串 长度为6
IN P_RESULTLB VARCHAR(100) --输入参数 变长字符串 长度为100
)
SPECIFIC CRFM.SQL070915145755000 --唯一的特定名称(别名),可以用存储过程名代替,这个特定名称用于DROP存储过程,或者给存储过程添加注释用,但不能调用存储过程。
DYNAMIC RESULT SETS 1 --指定存储过程返回结果的最大数量
LANGUAGE SQL --语句接口约定为 DB2SQL
NOT DETERMINISTIC --表示存储过程是动态(DETERMINISTIC)或者非动态(NOT DETERMINISTIC)的。动态的返回的值是不确定的。非动态的存储过程每次执行返回。
CALLED ON NULL INPUT --表示可以调用存储过程而不管任何的输入参数是否为NULL,并且,任何的OUT或者INOUT参数可以返回一个NULL或者非空值。检验参数是否为NULL是在过程中进行的。
MODIFIES SQL DATA --确定允许例程访问 SQL 的目标级别。表示存储过程可以执行任何 SQL 语句。可以对数据库中的数据进行增加、删除和修改。READS SQL DATA: 表示存储过程可以执行中,可读取SQL,但不可修改 SQL 数据。CONTAINS SQL: 表示存储过程可以执行中,既不可读取 SQL 数据,也不可修改 SQL 数据。
INHERIT SPECIAL REGISTERS --表示继承专用寄存器
BEGIN ATOMIC --事务会自动回滚,BEGIN NOT ATOMIC 表示事务不会自动回滚