【问题标题】:How do I pass a parameter value from one stored procedure to another?如何将参数值从一个存储过程传递到另一个存储过程?
【发布时间】:2019-10-13 14:12:48
【问题描述】:

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

我有两个存储过程,这里是 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

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

【问题讨论】:

    标签: sql sql-server stored-procedures parameters


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 2015-08-24
      • 1970-01-01
      • 2010-11-14
      • 2014-10-17
      • 2016-11-05
      • 1970-01-01
      相关资源
      最近更新 更多