Sql server 将select语句的结果作为参数传递给存储过程
我有一个存储过程,它执行各种检查并向多个表插入值Sql server 将select语句的结果作为参数传递给存储过程,sql-server,loops,stored-procedures,Sql Server,Loops,Stored Procedures,我有一个存储过程,它执行各种检查并向多个表插入值 ALTER PROCEDURE [dbo].[storedprocedurename] @Parameter1 uniqueidentifier, @Parameter2 datetime2, @Parameter3 bit, @Parameter4 varchar(max) AS BEGIN IF @Parameter IS NULL THEN BEGIN INSERT
ALTER PROCEDURE [dbo].[storedprocedurename]
@Parameter1 uniqueidentifier,
@Parameter2 datetime2,
@Parameter3 bit,
@Parameter4 varchar(max)
AS
BEGIN
IF @Parameter IS NULL
THEN
BEGIN
INSERT INTO
我还有一个select语句,返回大约600行
SELECT
column1, column2, column3, column4
FROM
Table1
输出:
Column1 Column2 Column3 Column 4
-------------------------------------------------------------------------
1 ared-234w-5yhe 12/07/2020 0 Table
2 fjed-reds-sdfg 10/10/1989 1 Chair
3 fgsv-34yg-jtut 1/4/1965 1 Computer
我基本上希望我的存储过程从select语句中获取值,将它们作为参数输入并执行。基本上,它将运行大约600次或基于select的行数
EXEC [dbo].[storedprocedurename] 'ared-234w-5yhe', '12/07/2020', 0, 'Table'
EXEC [dbo].[storedprocedurename] 'fjed-reds-sdfg', '10/10/1989', 1, 'Chair'
我该怎么做?我使用的是SQL Server,straighforward选项是使用: 然而,通常可以发现基于集合的替代方法比过程的方法更适合SQL 在这种情况下,您将把存储过程放在一边,并且参数的所有逻辑都应该基于。例如,对于共享的存储过程,它可能是这样的:
INSERT INTO dbo.Table2
SELECT NEWID(), column2, column3, column4
FROM dbo.Table1 AS T1
WHERE T1.column1 IS NULL
我猜你在想一个更复杂的逻辑,所以,如果你想分享,我们可以看一下,告诉你如何转换它。有时容易,有时不容易,结果不容易理解。在这种情况下,您应该评估每种方法的优缺点。Erland对此进行了很好的讨论。接着他对@DDLearn的讨论——这个答案对你有帮助吗?
INSERT INTO dbo.Table2
SELECT NEWID(), column2, column3, column4
FROM dbo.Table1 AS T1
WHERE T1.column1 IS NULL