gpt4 book ai didi

sql-server - 为 select 中的每一行调用存储过程

转载 作者:行者123 更新时间:2023-12-04 17:01:43 26 4
gpt4 key购买 nike

我的 select 语句中有一堆记录。我必须为该选择中的每一行调用特定的存储过程。我知道这是用游标完成的(我已经在 SO 上找到了有关此问题的答案 - 但它们都非常旧)。我很好奇今天在现代版本的 SQL Server 中是否还有其他可能性?

我的选择:

SELECT USER_KEY, USER_WHK FROM BAUSER WHERE USER_STA = '1'

我的插入:

EXEC sp_BAUSCA_BASE 
@iUSCA_KEY = NULL
, @iCAET_KEY = 150000003
, @iUSER_KEY = --user key from select
, @iENTE_KEY = 110000001
, @dUSCA_DAT = GETDATE()
, @cUSCA_STA = '1'
, @cUSCA_SRT = '1'
, @iUserId = 160000230
, @cTask = '2'

最佳答案

您可以使用 Cursor 归档此要求,我为你做了一个演示,这可能对你有帮助。

有关光标的更多信息,可以访问此link .

演示

DECLARE 
@iUSCA_KEY NVARCHAR(50) ,
@iCAET_KEY NVARCHAR(50) ,
@iUSER_KEY NVARCHAR(50) ,
@iENTE_KEY NVARCHAR(50) ,
@dUSCA_DAT DATETIME,
@cUSCA_STA NVARCHAR(50) ,
@cUSCA_SRT NVARCHAR(50) ,
@iUserId INT,
@cTask NVARCHAR(50)

DECLARE MY_data CURSOR LOCAL FAST_FORWARD
FOR
SELECT
iUSCA_KEY,
iCAET_KEY ,
iUSER_KEY ,
iENTE_KEY ,
dUSCA_DAT,
cUSCA_STA,
cUSCA_SRT ,
iUserId ,
cTask
FROM BAUSER WHERE USER_STA = '1'


OPEN MY_data
FETCH NEXT FROM MY_data INTO @iUSCA_KEY,@iCAET_KEY,@iUSER_KEY,@iENTE_KEY,@dUSCA_DAT,@cUSCA_STA,@cUSCA_SRT,@iUserId,@cTask
WHILE @@FETCH_STATUS = 0
BEGIN

EXEC sp_BAUSCA_BASE
@iUSCA_KEY = @iUSCA_KEY
, @iCAET_KEY = @iCAET_KEY
, @iUSER_KEY = @iUSER_KEY
, @iENTE_KEY = @iENTE_KEY
, @dUSCA_DAT = @dUSCA_DAT
, @cUSCA_STA = @cUSCA_STA
, @cUSCA_SRT = @cUSCA_SRT
, @iUserId = @iUserId
, @cTask = @cTask

FETCH NEXT FROM MY_data INTO @iUSCA_KEY,@iCAET_KEY,@iUSER_KEY,@iENTE_KEY,@dUSCA_DAT,@cUSCA_STA,@cUSCA_SRT,@iUserId,@cTask
END
CLOSE MY_data
DEALLOCATE MY_data

关于sql-server - 为 select 中的每一行调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56141412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com