2017-03-07 60 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