有时候一些复杂的业务逻辑将要通过存储过程的循环语句进行处理;以下列出2种DB2存储过程的循环语句,方便以后的查看并使用! 推荐第一种方式的使用,最大的优点就是比较直观;在需要操作很多字段的情况下,不需要定义太多的字段变量作为中间存储媒介. 一.FOR方式(FOR .. AS [游标名] CURSOR FOR [SELECT......]) BEGIN --语句块,必须要加上,否则会出错. FOR V AS MYCURSOR CURSOR FOR SELECT ID,NAME,AGE FROM P
--循环 create or replace procedure p_xunhuan(input in number,output out number) is ); begin ; ..input loop begin output := input+temp; dbms_output.put_line('----'||output); end; end loop; end p_xunhuan; 运行存储过程: declare sr number;--输入参数 sc number;--输出参数
一.动态执行SQL PREPARE S1 FROM 'delete from test'; EXECUTE S1; 二.使用游标 DECLARE V_CURSOR CURSOR FOR SELECT DELETESQL,INSERTSQL FROM FJDC.V_I_DG_DM_ZY_WL_ZBHZ_ATTR T; OPEN V_CURSOR; FETCH V_CURSOR INTO V_DELETESQL,V_INSERTSQL; CLOSE V_CURSOR; 三.WHILE循环 WHILE
存储过程代码如下: CREATE PROCEDURE proc_sum2(IN n INT,OUT sum INT,OUT j INT) BEGIN DECLARE i INT; ; ; ; WHILE i<=n do SET sum=sum+i; ; END WHILE; END; 取sum值命令行执行如下: db2 "CALL BSC.PROC_SUM2 (, ?,?)" |awk 'NR==5{print $4}' 取j的值命令行执行如下: db2 "CALL B
大家在迁移数据库时,存储过程一般也要迁移过去,但一般有两个问题: 1. 非常多存储过程有先后关系(存储过程调用存储过程),假设存储过程数量少,还能手动操作.假设量大,那真是要疯了. 2. 存储过程过大(行数过多),导致异常 这边有个方法,也许能够解决问题. 一. 导出存储过程 EXPORT TO G:/PROCUDURE/procudure.del OF del MODIFIED BY LOBSINFILE SELECT 'SET CURRENT SCHEMA '||rtrim(procsche
本人收集的,挺有用的 1. 利用游标循环更新.删除MemberAccount表中的数据 DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游标中 OPEN My_Cursor; --打开游标 FETCH NEXT FROM My_Cursor ; --读取第一行数据 WHILE @@FETCH_STATUS = 0 BEGIN --UPDATE dbo.MemberAccount SE
mysql 操作同样有循环语句操作,三种标准循环模式:while, loop,repeat, 外加一种非标准循环:goto [在c或c#中貌似出现过类型循环但是一般不建议用!] 一般格式为:delimiter // 定义结束符 drop procedure if exists wk; 假如存在则删除create procedure name([in | out | input] 参数) begin while-loop-repeat-mysql-code end // delimiter ; 还
一.导出存储过程 EXPORT TO D:/PROCUDURE/procudure.del OF del MODIFIED BY LOBSINFILE SELECT 'SET CURRENT SCHEMA '||rtrim(procschema)||'@'||chr(10)||'SET CURRENT PATH = SYSIBM,SYSFUN,SYSPROC,'||rtrim(procschema)||' @'||chr(10)||text||chr(10)||'@'||chr(10)FROM
修改之前的脚本 select count(*) from dbdk.dtdkg010 A left join DBDK.DTDKG070 D ON D.PAY_NO = A.PAY_NO LEFT JOIN CXLFM.DTFMA000_UNIT F ON F.DIV_NO = D.PLN_DIV1 AND F.DIV_NO2=D.PLN_DIV2 LEFT JOIN DBDK.DTDKH900 E ON E.COST_CD = D.COST_CD LEFT JOIN DBDK.DTDKG071
接下来项目在技能可能偏向数据库方面,补习下. 学习写第一个db2在存储过程,记录下. ---- stored procedures code CREATE OR REPLACE PROCEDURE "EFTP"."STPR_A" ()) LANGUAGE SQL --SPECIFIC SQL181102050119141 BEGIN ); --SELECT CURRENT USER INTO v FROM SYSIBM.SYSDUMMY1; --SELECT cou
创建出错时使用: show errors查看具体的错误提示 一. 存储过程中的一个循环及变量引用示例: create or replace procedure my_proiscursor cur is select distinct tzname as name from V$TIMEZONE_NAMES order by name; x varchar(1024);y varchar(1024);z varchar(1024);beginfor info in cur LOOPy:=info