execute T_llj3 @pkmsg='abc';
select * from test_llj_1;
delete from test_llj_1;
drop proc T_llj3;
create proc T_llj3
@pkmsg char(12)
as
DECLARE @sqlu varchar(200) ;
DECLARE @sqls varchar(200) ;
DECLARE @sqlup varchar(200) ;
declare @tbnm varchar(200);
SET @sqlu= ' update '
SET @sqls= ' set STATUS=3 where MESSAGE_ID='
SET @sqlup = ''
select * from RECEIVE_MESSAGE where MESSAGE_ID=@pkmsg
begin
DECLARE
c_test_main
CURSOR FAST_FORWARD FOR
SELECT
tbs.TABLE_NAME
FROM
INFORMATION_SCHEMA.tables tbs
WHERE
tbs.TABLE_NAME LIKE 'RECEIVE_%'
OPEN c_test_main WHILE 1=1
BEGIN
FETCH NEXT
FROM
c_test_main
INTO
@tbnm
SET @sqlup=@sqlu+@tbnm +@sqls +@pkmsg
insert into test_llj_1 values(@sqlup);
IF @@fetch_status != 0 BREAK
END
--EXEC(@sqlu)
CLOSE c_test_main
-- 释放游标.
DEALLOCATE c_test_main
end
select * from test_llj_1;
delete from test_llj_1;
drop proc T_llj3;
create proc T_llj3
@pkmsg char(12)
as
DECLARE @sqlu varchar(200) ;
DECLARE @sqls varchar(200) ;
DECLARE @sqlup varchar(200) ;
declare @tbnm varchar(200);
SET @sqlu= ' update '
SET @sqls= ' set STATUS=3 where MESSAGE_ID='
SET @sqlup = ''
select * from RECEIVE_MESSAGE where MESSAGE_ID=@pkmsg
begin
DECLARE
c_test_main
CURSOR FAST_FORWARD FOR
SELECT
tbs.TABLE_NAME
FROM
INFORMATION_SCHEMA.tables tbs
WHERE
tbs.TABLE_NAME LIKE 'RECEIVE_%'
OPEN c_test_main WHILE 1=1
BEGIN
FETCH NEXT
FROM
c_test_main
INTO
@tbnm
SET @sqlup=@sqlu+@tbnm +@sqls +@pkmsg
insert into test_llj_1 values(@sqlup);
IF @@fetch_status != 0 BREAK
END
--EXEC(@sqlu)
CLOSE c_test_main
-- 释放游标.
DEALLOCATE c_test_main
end
本文介绍了一个SQL存储过程的实现案例,该过程通过游标遍历匹配的表并更新特定字段。此示例展示了如何动态构建SQL更新语句,并通过游标逐个表进行操作。
643

被折叠的 条评论
为什么被折叠?



