如何从表中获取数据在商店过程中使用Like cluse?

时间:2018-01-30 07:45:06

标签: stored-procedures sql-server-2012

这里我想从表中获取一些结果,因为我有如下所示的写作Sp。

create proc GetData
(
@tableName nvarchar(max),
@groupLetter nvarchar(max)
)
as
begin
    EXEC('Select * from ' + @tablename + 'where LastName LIKE'''+'%'+@groupLetter+'%'+'''ORDER BY LastName') 
end

到这个SP我传递表名和文本来查找结果。 这会成功创建SP,但在执行时会出错。

这是我执行SP的方式。     EXEC GetData员工,ab

我收到的错误如下。 关键字'LIKE'附近的语法不正确。

2 个答案:

答案 0 :(得分:1)

您的代码应如下所示:

declare @sql nvarchar(max) = N'Select * from ' + @tablename + N' where LastName LIKE '''+N'%'+@groupLetter+N'%'+N''' ORDER BY LastName'

EXEC(@sql); 

您遇到的第一个错误是错过了查询关键字之间的某些空格,第二个错误:exec不接受字符串连接,因此您应该在变量中构造查询,然后将其传递给{{ 1}}。

答案 1 :(得分:1)

这只是你的字符串中的语法错误(没有足够的空格)。它应该是:

begin
    EXEC('Select * from ' + @tablename + ' where LastName LIKE '''+'%'+@groupLetter+'%'+''' ORDER BY LastName') 
end