如何将参数值从一个存储过程传递到另一个存储过程?

时间:2019-05-28 05:35:53

标签: sql sql-server stored-procedures parameters

我正在尝试将输入参数从一个存储过程传递到另一个存储过程,该参数的值将被用于插入表中。

我有两个存储过程,这是SP的逻辑:

第一个-

CREATE PROCEDURE [abc].[SP1](
@ID1     INT
@ID2     INT
@Date    VARCHAR(10)
@Value   VARCHAR(50)
)

AS 

Select into #temp...

EXEC [abc].[SP2] @ID1, @ID2, @Date, @Value

Select...

第二个-

CREATE PROCEDURE [abc].[sp2](
@bID1    INT
@bID2    INT
@bDate   VARCHAR(10)
@Value   VARCHAR(50)
)

DECLARE @bID1 INT, @bID2 INT, @bDate VARCHAR(10), @Value VARCHAR(50)


--main part that I'm concerned with, getting the parameter values to work
SELECT @bID1, @bID2, @bDate, @Value, x.col1, x.col2 
INTO [abc].[tableA]
FROM tableX x

尝试此操作时,我收到一条错误消息,提示我“必须声明标量变量”

1 个答案:

答案 0 :(得分:1)

这不是在SQL Server中创建过程的方式。您应该执行以下操作:

CREATE PROCEDURE [SP1]
 @ID1     INT
,@ID2     INT
,@Date    VARCHAR(10)
,@Value   VARCHAR(50)

AS 

Select into #temp...

第二,当您为过程声明参数时,不能在下面声明具有相同名称的变量:

 CREATE PROCEDURE [abc].[sp2]
 @bID1    INT
,@bID2    INT
,@bDate   VARCHAR(10)
,@Value   VARCHAR(50)

AS

--main part that I'm concerned with, getting the parameter values to work
SELECT @bID1, @bID2, @bDate, @Value, x.col1, x.col2 
INTO [abc].[tableA]
FROM tableX x