我有一个返回一组行的 SELECT 语句。
从每一行中,我需要获取一列的值并将其传递给存储过程以获取我需要为行集本身提供的值。
例如:
DECLARE @col1 int
DECLARE @col2 int
DECLARE @col3 varchar(20)
DECLARE myCursor CURSOR FOR
SELECT col1, col2, col3
FROM table1
WHERE....
OPEN myCursor
FETCH NEXT FROM myCursor
INTO @col1, @col2
WHILE @@FETH_STATUS = 0
BEGIN
SET @col3 = EXEC proc_GetCol3_Value @col1, @col2
FETCH NEXT FROM myCursor
INTO @col1, @col2
END
CLOSE myCursor
DEALLOCATE myCursor
现在,基于此,我想返回原始游标检索到的行,加上从执行的存储过程中检索到的值作为第 3 列的值。
比如说,SQL 游标返回的行是:
col1 col2 col3
1 5000
2 5000
3 2500
4 2000
我需要的是在运行游标和存储过程后提供了所有列,结果集应该是:
col1 col2 col3
1 5000 APPROVED
2 5000 REJECTED
3 2500 CANCELLED
4 2000 APPROVED
欢迎任何想法。谢谢。
PS 我知道很多人会建议简单地使用 JOIN 语句,但是由于要执行的存储过程非常复杂,因此使用游标 SQL 语句进行连接会太复杂。