2017-02-16 80 views
0

我認爲這很簡單,但是我對SP的使用經驗非常有限。將SET變量傳遞給存儲過程

我有一個相當長的查詢,我現在想要傳入一個SP,我沒有太多的運氣,所以我把它分解成部分,我卡在以下部分:

ALTER PROCEDURE [dbo].[Exchange Rate] (@CCY char (3)) 

EXEC(' 

DECLARE @CurConv float 

SET @CurConv = (Select XRATE FROM CURRENCY.dbo.currfx where CODE = ' + @CCY + ') 

') END 

我不斷收到的錯誤是:

Msg 207, Level 16, State 1, Line 5 
Invalid column name 'GBP'. 

問題是英鎊是不是列的值?任何幫助將非常感激。

感謝

+0

什麼是數據庫類型? – patrick

+0

你爲什麼使用動態sql? –

+0

因爲我將結果傳遞給Excel – Carlos80

回答

4

執行你的動態查詢是

SET @CurConv = (Select XRATE FROM CURRENCY.dbo.currfx where CODE = GBP 

不過是應

SET @CurConv = (Select XRATE FROM CURRENCY.dbo.currfx where CODE = 'GBP' 

所以,你必須圍繞的@CCY值與額外的單引號:

EXEC(' 

DECLARE @CurConv float 

SET @CurConv = (Select XRATE FROM CURRENCY.dbo.currfx where CODE = ''' + @CCY + ''') 

') END 
+0

感謝Andy,正是我所需要的。 – Carlos80

0

DECLARE @CurConv浮 選擇@CurConv = XRATE FROM CURRENCY.dbo.currfx其代碼= @CCY

EXEC交易所@CurConv

+0

你可以試試這個.. –