2017-03-07 55 views
1

我想将数据保存在变量中,稍后在过程中使用它。如何将更新语句值添加到变量?

UPDATE acc_Account 
       SET  acc_Account.CompanyID = (SELECT TOP 1 
                  utl_Company.CompanyID 
                FROM utl_Company 
                ORDER BY CompanyID DESC 
               ) 
       WHERE acc_Account.AccountNumber = @AccountNumber 

如何将公司ID保存到变量中以便在稍后的insert语句中使用它?

回答

4

有这个在你的代码的开头:

declare @var varchar(20) -- change the data type according to your needs 
set @var = (SELECT TOP 1 utl_Company.CompanyID FROM utl_Company ORDER BY CompanyID DESC) 
+0

更新语句之前或之后? –

+2

这是正确的做法。我会对OP做出的一个建议是使用select MIN(CompanyID)而不是top 1和order。如果表格很大,则更容易理解,并且性能稍微有所提高。 –

+1

@Bishoy Ezzat - 之前会很好。 –

2

创建更新语句前select local variable,然后将其设置,然后使用它。

DECLARE @companyID INT; 
SELECT @companyID = "YOUR QUERY"; 
1

我认为有效的方法是使用OUTPUT条款

DECLARE @TAB TABLE (CompanyID BIGINT ) 
UPDATE acc_Account 
SET acc_Account.CompanyID = (
     SELECT max(CompanyID) FROM utl_Company 
     ) 
output inserted.CompanyID into @TAB 
WHERE acc_Account.AccountNumber = @AccountNumber 

SELECT * FROM @TAB