2009-08-05 35 views
0

您好林一些動態SQL問題,所以我建立一個動態查詢,並在最後的情況下,我有這樣的:使用SQL2000經與INT型

IF (@apepac is not null and @nompac is not null and @month is not null) 
    SELECT @DynaSQL_1= @DynaSQL_1 + ' AND PACIENTE.apellidos like ''' + @apepac + '%'''+ 
            ' AND PACIENTE.nombres like ''' + @nompac + '%'''+ 
            ' AND DATENAME(MONTH,honorariotecnologo.fechaestudio) = ''' + @month +'''' + 
            ' AND YEAR(honorariotecnologo.fechaestudio) = '[email protected]+'' 

因此參數@year聲明中這樣說:

DECLARE @year int, 

,我從SQL輸出得到的錯誤是:

Msg 245, Level 16, State 1, Line syntax 
43Error to convert the nvarchar value ' 

出了什麼問題?

謝謝!

順便說一句,爲什麼如果參數聲明爲INT,在正文查詢它必須被鑄造/轉換? ...

回答

1

您必須將INT轉換或轉換爲NVARCHAR。 Google CAST CONVERT TSQL。

+0

以後發佈且沒有代碼示例的答案!犯規,我哭了! :) – 2009-08-05 21:41:33

+0

這兩個代碼示例都是錯誤的,因爲他需要將其轉換爲NVarchar,而不是varchar。 :P 當我點擊「提交」時沒有回覆;) – 2009-08-06 01:15:01

1

您需要將您的@Year作爲字符值。

試試這個:如果你想單引號添加到年底

' AND YEAR(honorariotecnologo.fechaestudio) = ' + CAST(@year AS varchar(10)) 
1

你想這照顧轉換錯誤的...

' AND YEAR(honorariotecnologo.fechaestudio) = '+CAST(@year AS VARCHAR) 

你想這是你的串。

' AND YEAR(honorariotecnologo.fechaestudio) = '+CAST(@year AS VARCHAR) + ''''