Db2 我想在循环中运行存储过程
我想在循环中运行sp。 我正在使用db2。 对于ex,如果我的表中有10行,并且8行包含状态为“已批准”,我希望这8行通过我的sp逐个执行 我用过这个方法Db2 我想在循环中运行存储过程,db2,Db2,我想在循环中运行sp。 我正在使用db2。 对于ex,如果我的表中有10行,并且8行包含状态为“已批准”,我希望这8行通过我的sp逐个执行 我用过这个方法 declare @v_count INT; declare @row_count INT; declare @v_actorCNUM CHAR(10); declare @v_sessID CHAR(32); declare @v_taskID SMALLINT; declare @v_dest_citrus
declare @v_count INT;
declare @row_count INT;
declare @v_actorCNUM CHAR(10);
declare @v_sessID CHAR(32);
declare @v_taskID SMALLINT;
declare @v_dest_citrusSCID INTEGER;
declare @v_src_citrusSCID INTEGER;
declare @v_CtrCnum CHAR(10);
declare @v_dest_security_grp_nm varchar(100);
declare @v_src_security_grp_nm varchar(100);
SET @v_count=1;
DECLARE GLOBAL TEMPORARY TABLE csc_trfr
(
Row_id INT GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1),
CNTRCTR_CNUM CHAR(10) NOT NULL ,
DEST_CSC_NM CHAR(30) ,
SRC_CSC_NM CHAR(30) ,
DEST_GRP_NM VARCHAR(100) ,
SRC_GRP_NM VARCHAR(100) ,
USR_LST_UPDT_ID CHAR(10)
) WITH REPLACE ON COMMIT PRESERVE ROWS NOT lOGGED;
insert into session.csc_trfr (cntrctr_cnum,dest_csc_nm,src_csc_nm,dest_grp_nm,src_grp_nm,usr_lst_updt_id)
select cntrctr_cnum,dest_csc_nm,source_csc_nm,dest_grp_nm,src_grp_nm,usr_lst_updt_id from citrus.cntrctr_csc_trfr where trfr_status='Approved';
select count(*) into @row_count from citrus.cntrctr_csc_trfr where trfr_status='Approved';
while @v_count<=@row_count
BEGIN
SET @v_actorCNUM=select usr_lst_updt_id from session.csc_trfr order by row_id offset @v_count rows fetch next 1 rows only;
SET @v_taskID=166;
set @v_dest_citrusSCID =select citrus_suprt_id from citrus.citrus_suprt_cntr where citrus_suprt_nm=(select DEST_CSC_NM from session.csc_trfr order by row_id offset @v_count rows fetch next 1 rows only );
set @v_src_citrusSCID=select citrus_suprt_id from citrus.citrus_suprt_cntr where citrus_suprt_nm=(select SRC_CSC_NM from session.csc_trfr order by row_id offset @v_count rows fetch next 1 rows only );
set @v_CtrCnum=select cntrctr_cnum from session.csc_trfr order by row_id offset @v_count rows fetch next 1 rows only;
set @v_dest_security_grp_nm =select DEST_GRP_NM from session.csc_trfr order by row_id offset @v_count rows fetch next 1 rows only;
set @v_src_security_grp_nm=select DEST_GRP_NM from session.csc_trfr order by row_id offset @v_count rows fetch next 1 rows only;
call citrus.BAC020_cntrctrCSCTrfr(@v_actorCNUM,'',@v_taskID,@v_dest_citrusSCID,@v_src_citrusSCID,@v_CtrCnum,@v_dest_security_grp_nm,@v_src_security_grp_nm,?,?,?);
@v_count=@v_count+1;
end
声明@v_count INT;
声明@row\u count INT;
声明@v_actorCNUM CHAR(10);
声明@v_sessID CHAR(32);
声明@v_taskID SMALLINT;
声明@v_dest_citrusSCID整数;
声明@v_src_citrusSCID整数;
声明@v_CtrCnum CHAR(10);
声明@v_dest_security_grp_nm varchar(100);
声明@v_src_security_grp_nm varchar(100);
设置@v_count=1;
声明全局临时表csc\U trfr
(
行id INT始终作为标识生成(以1乘以1的增量开始),
CNTRCTR_CNUM字符(10)不为空,
DEST_CSC_NM CHAR(30),
SRC_CSC_NM字符(30),
DEST_GRP_NM VARCHAR(100),
SRC_GRP_NM VARCHAR(100),
USR_LST_UPDT_ID字符(10)
)提交时替换保留未记录的行;
插入session.csc_trfr(cntrctr_cnum、dest_csc_nm、src_csc_nm、dest_grp_nm、src_grp_nm、usr_lst_updt_id)
从citrus.cntrctr\u csc\u trfr中选择cntrctr\u cnum、dest\u csc\u nm、source\u csc\u nm、dest\u grp\u nm、src\u grp\u nm、usr\u lst\u updt\u id,trfr\u status='Approved';
从citrus.cntrctr\u csc\u trfr中选择count(*)进入@row\u count,其中trfr\u status='Approved';
而@v_count我也有同样的问题
以下是一个例子:
use database1
去
声明@RC int
声明@RequestCode nvarchar(50)
声明的列\u游标
从表\u name中选择columnName
打开列光标
从列_游标获取下一个到@RequestCode
当@@Fetch\u Status=0开始时
执行@RC=[dbo].[stored_procedure_name]@RequestCode
从列_游标获取下一个到@RequestCode
终点
关闭列光标
取消分配列\u游标我也有同样的问题
以下是一个例子:
use database1
去
声明@RC int
声明@RequestCode nvarchar(50)
声明的列\u游标
从表\u name中选择columnName
打开列光标
从列_游标获取下一个到@RequestCode
当@@Fetch\u Status=0开始时
执行@RC=[dbo].[stored_procedure_name]@RequestCode
从列_游标获取下一个到@RequestCode
终点
关闭列光标
取消分配列\u游标您所说的“已执行”是什么意思?您是否可以在代码中添加一些关于您尝试执行的操作的注释?并尝试使用不带@符号的“v_actorCNUM”。Henrik我已经在下面添加了注释,说明我的代码到底在做什么。我已经删除了@符号,但它仍然会出错。您使用什么工具来创建SP?什么是语句终止符?语句的实际创建过程部分在哪里?工具是db2语句终止符->;你说的“处决”是什么意思?您是否可以在代码中添加一些关于您尝试执行的操作的注释?并尝试使用不带@符号的“v_actorCNUM”。Henrik我已经在下面添加了注释,说明我的代码到底在做什么。我已经删除了@符号,但它仍然会出错。您使用什么工具来创建SP?什么是语句终止符?语句的实际创建过程部分在哪里?工具是db2语句终止符->;