我曾尝试循环使用临时表,但没有用,最终只出现了很多错误。通过临时表进行迭代
请帮我我如何能工作的这一个..
我需要的是这样的:
- 我需要获取从表中的ID列,并将其存储在一个临时表。
- 然后遍历每个ID,并执行一个存储过程,将该ID作为参数。
- 将该存储过程的返回值(=一列)插入另一个表中。
请指导我如何做到这一点。
我做了很多搜索,并与光标和基于连接混淆。
我曾尝试循环使用临时表,但没有用,最终只出现了很多错误。通过临时表进行迭代
请帮我我如何能工作的这一个..
我需要的是这样的:
请指导我如何做到这一点。
我做了很多搜索,并与光标和基于连接混淆。
恕我直言你的情况下,你不需要临时表。
假设你有以下两张表。首先是源表,另一个是目标表。
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
请问你的目标表(*另一*当你把它称为) 看起来像? – peterm 2013-03-02 07:13:07
它只包含一个ID = PK coulmn和一个值列..我需要添加到值列 – James 2013-03-02 07:14:36