【问题标题】:How can I use Select in a Declared variable within a TSQL Stored Procedure?如何在 SQL 存储过程中的声明变量中使用 Select?
【发布时间】:2016-04-20 07:15:18
【问题描述】:

我的 TSQL 存储过程中有这段代码:

CREATE Procedure [dbo].[priceVarianceTest]
    @Unit varchar(25),
    @BegDate datetime,
    @EndDate datetime 
AS 

DECLARE @Week1End datetime = DATEADD(Day, 6, @BegDate);
DECLARE @Week2Begin datetime = DATEADD(Day, 7, @BegDate);
DECLARE @MemberNo VarChar(25) = SELECT MEMBERNO FROM INVOICEDETAIL WHERE UNIT = @Unit;
DECLARE @MemberItemCode VarChar(50) = SELECT ITEMCODE FROM INVOICEDETAIL WHERE UNIT = @Unit;

...但它不会执行,说:

Msg 156, Level 15, State 1, Procedure priceVarianceTest, Line 9
Incorrect syntax near the keyword 'SELECT'.
Msg 156, Level 15, State 1, Procedure priceVarianceTest, Line 10
Incorrect syntax near the keyword 'SELECT'.

然后我想像这样插入这些 val:

INSERT INTO #temp1 (Unit, MemberNo, MemberItemCode) VALUES (@Unit, MemberNo, MemberItemCode);

...所以我也试过这个:

INSERT INTO #temp1 (Unit, MemberNo, MemberItemCode) VALUES (@Unit, SELECT MEMBERNO FROM INVOICEDETAIL WHERE UNIT = @Unit, MemberItemCode);

...但这并不比我之前的尝试更受欢迎。

那么,我怎样才能获得这些值。我的语法或方法有问题吗?

【问题讨论】:

    标签: sql-server tsql select stored-procedures insert


    【解决方案1】:

    试试SELECT @variable = column:

    DECLARE @MemberNo VarChar(25); 
    SELECT @MemberNo = MEMBERNO FROM INVOICEDETAIL WHERE UNIT = @Unit;
    DECLARE @MemberItemCode VarChar(50); 
    SELECT @MemberItemCode = ITEMCODE FROM INVOICEDETAIL WHERE UNIT = @Unit;
    

    或者更简单地说:

    DECLARE @MemberNo VarChar(25); 
    DECLARE @MemberItemCode VarChar(50); 
    SELECT @MemberNo = MEMBERNO, 
           @MemberItemCode = ITEMCODE 
    FROM INVOICEDETAIL WHERE UNIT = @Unit;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-08
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 2019-07-01
      • 1970-01-01
      相关资源
      最近更新 更多