如何对一行中的每一列运行一次存储过程?

问题描述 投票:0回答:1

我有一个表,其中包含1-52周的列。我还有一个存储过程,这个存储过程使用@date返回一个单一的值,我想创建第二个存储过程,将所有52列的值插入到我的表中。

我想创建第二个存储过程,将所有52列的值插入到表中。我试图执行原始存储过程52次,每列执行一次,每次在@date上添加7天。这可能吗?有没有更好的方法?谢谢您

PROC procedure2
    @date = '01/01/2018'
AS
BEGIN
    INSERT INTO table (wk01, wk02,...)
    EXEC procedure1 @date
    SET @date = DATEADD(dd, 7, @date)
    EXEC procedure1 @date
    ...
END
sql stored-procedures sql-insert
1个回答
0
投票

你可以使用游标,但是请注意,由于性能问题,这应该是你最后的选择。

是否可以将一个表变量传递给这个存储过程,然后使用表变量?

如果不可以,我们可以使用游标。

https:/docs.microsoft.comen-ussqlt-sqllanguag-elementsdeclare-cursor-transact-sql?view=sql-server-ver15。

© www.soinside.com 2019 - 2024. All rights reserved.