我认为这很简单,但我对SP的经验非常有限。
我有一个相当冗长的查询,我现在正试图传递给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 :(得分: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
答案 1 :(得分:0)
DECLARE @CurConv float 选择@CurConv = XRATE FROM CURRENCY.dbo.currfx,其中CODE = @CCY
EXEC Exchange @CurConv