2016-02-28 95 views
1

我的存儲過程:如何插入包含撇號的值?

@type varchar(250) = NULL 
AS 
Begin 
    DECLARE @Sql NVARCHAR(MAX); 

    SELECT @Sql = N'SELECT * FROM Match WHERE MatchID Between ' 
    + CONVERT(NVARCHAR(50),(@currPage - 1)*@recodperpage+1)+ 
      ' and '+ CONVERT(NVARCHAR(50),@currPage*@recodperpage) 

    IF @type IS NOT NULL 
     SELECT @Sql += N' AND Type = ' + convert(varchar(50),@type) 

    EXEC SP_EXECUTESQL @Sql  
END 

我EXEC但得到錯誤

DECLARE @return_value int 

EXEC @return_value = [dbo].[search_PhanTrang] 
     @currPage = 1, 
     @recodperpage = 5, 
     @Pagesize = 6, 
     @type = N'random' 

SELECT 'Return Value' = @return_value 

錯誤:

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

如何添加「我的SQL字符串來解決這個問題? ('+ @ type +')

+0

它是什麼類型的數據庫? – kometen

回答

2

字符串需要放在單引號之間,正如你可能已經知道的那樣。另外,如果該類型包含引號,則需要將其加倍。這使得以下行:

SELECT @Sql += N' AND Type = ''' + REPLACE(convert(varchar(50),@type),'''','''''')+''''; 
+0

非常感謝你:) – NamBui