【发布时间】:2018-08-08 10:20:45
【问题描述】:
我在 sql server 中创建了一个存储过程来提供 SSRS 以允许它接受多个值。 我已经创建了它,当我在报告中使用它或在 sql server 中执行它时,我收到以下错误消息。我有什么遗漏吗?谢谢
Msg 207, Level 16, State 1, Line 35
Invalid column name 'London'.
这是我的示例数据。随意用它创建表格
DECLARE @MyTables AS TABLE (ID INT, City VARCHAR(100))
INSERT INTO @MyTables VALUES
(1,'London'),
(2,'Chester'),
(3,'Luton'),
(4,'New York'),
(1,'London'),
(2,'Chester'),
(5,'Paris'),
(5,'Paris'),
(2,'Chester'),
(2,'Chester')
SELECT * FROM @MyTables
这是我的动态存储过程代码
CREATE PROCEDURE dbo.CitiesGroup
@Cities NVARCHAR(Max) -- this are the parameters
AS
BEGIN
DECLARE @sqLQuery VARCHAR(MAX)
Declare @AnswersTempTable Table
( ID INT,
City VARCHAR(250)
)
SET @sqlQuery =
'SELECT
ID,
City
FROM MyTables
where Convert(nvarchar(Max),City) IN ('+@Cities+')
Insert into @AnswersTempTable
exec (@sqlQuery)
select * from @AnswersTempTable'
END
谢谢
EXEC dbo.CitiesGroup 'London'
错误码
Msg 207, Level 16, State 1, Line 32
Invalid column name 'London'.
【问题讨论】:
-
您将通过伦敦作为直列,而不是字符串。试试 ('''+@Cities+''')
-
您可能要考虑使用表值参数,而不是使用动态 sql。
-
您声明的表变量将无法从动态 SQL 获得。您还需要将
IN ('+@Cities+')更改为 (IN ('''+@Cities+'''))。你怎么经过几个城市? -
你想达到什么目的?
标签: sql sql-server tsql stored-procedures reporting-services