这里我想从表中获取一些结果,因为我有如下所示的写作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'附近的语法不正确。
答案 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