2016-02-28 99 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