2014-04-08 75 views
0

這應該是沒有問題的,但在長時間工作後,我無法注意到我在這裏做錯了什麼。存儲過程不會返回任何東西

有很簡單的存儲過程:

ALTER PROCEDURE MyProc 
@input char(10) 

AS 

    BEGIN 
     SET NOCOUNT ON; 
     SELECT isonum 
     FROM iso where isonum LIKE '%' + @input + '%' 
     ORDER BY isonum 
    END 

執行查詢時:選擇isonum from iso where isonum like '%2333%' - 我得到的數據,但在執行存儲過程時:

exec MyProc '2333' - 我得到什麼???

這裏有什麼問題?

+0

它是否與@input varchar(10)一起使用?是否填充變量,以便搜索「LIKE'%2333%'? – Danny

回答

2

更改爲@input char(10)@input varchar(10)

您的SP正在運行

isonum from iso where isonum like '%2333 %'

+0

你可以通過添加到你的sp觀察:'select'['+ @input +']'' –

+0

謝謝你的人,它的工作原理。困難的一天 –

0
ALTER PROCEDURE MyProc 
@input varchar(10) --<-- Use varchar here 

AS 

    BEGIN 
     SET NOCOUNT ON; 
     SELECT isonum 
     FROM iso where isonum LIKE '%' + @input + '%' 
     ORDER BY isonum 
    END 

'CHAR' 或 'NCHAR' 固定數據類型以及它們添加空格到傳遞的字符串,如果它小於數據的最大長度。