[英]Iterate through a temp table
我确实尝试过遍历一个临时表,但是没有用,只会导致很多错误。
请帮我解决这个问题。
我的需求是:
请指导我如何执行此操作。
我确实搜索了很多..并且对光标和基于集合的联接感到困惑。
恕我直言,在您的情况下,您不需要临时表。
假设您有以下两个表。 第一个是源表,另一个是目标表。
CREATE TABLE mytable(id INT IDENTITY PRIMARY KEY, col1 nvarchar(10));
CREATE TABLE mytable2(id INT, value INT);
mytable
包含以下示例数据:
id col1
----------------
1 row1
2 row2
3 row3
4 row4
而且您有一些SP可以根据id进行计算,例如
CREATE PROCEDURE getValue (@id INT, @value INT OUT)
AS
SET NOCOUNT ON;
SET @value = @id * 2;
然后,您可以创建一个SP来完成这样的工作
CREATE PROCEDURE proccessData
AS
SET NOCOUNT ON;
DECLARE @id INT, @value INT;
DECLARE id_cursor CURSOR FOR
SELECT id FROM mytable WHERE id > 1 AND id < 4;
OPEN id_cursor;
FETCH NEXT FROM id_cursor INTO @id;
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC getValue @id, @value OUTPUT;
INSERT INTO mytable2 VALUES(@id, @value);
-- Or use update if you already have id's in mytable2
-- UPDATE mytable2 SET value = @value WHERE id = @id;
FETCH NEXT FROM id_cursor INTO @id;
END
CLOSE id_cursor;
DEALLOCATE id_cursor;
致电该SP之后
EXEC proccessData
你会进入mytable2
id value
----------- -----------
2 4
3 6
这是工作的sqlfiddle
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.