1

基本上我有一个应该从表中获取查询并运行它们的过程。这工作正常,除非我尝试在查询中引用的过程中定义变量。我只是使用以下方法定义变量:

DECLARE @spcode as varchar(255)
SET @spcode = 'C'

然后在表格中我在这里引用它:

...
where sp_flag = @spcode
...

然后我的程序运行表并执行表中的所有查询,如果我简单地设置 sp_flag = 'C',这将有效,但如果我尝试将其设置为过程中定义的变量,我会收到以下错误:

Msg 137, Level 15, State 2, Line 7
Must declare the scalar variable "@spcode".

我已经四处寻找,但我无法找到解决这个问题的方法,也许有人知道我将如何解决这个问题?

谢谢,

山姆

4

1 回答 1

2

看看这个例子。

第一个片段在不使用变量的情况下执行 SQL 语句。二与。

create table tbl1 (id int identity(1,1), value varchar(100));  
insert into tbl1 (value) values ('abc'), ('def'), ('xyz');

-- first snippet (without using variable)
declare
    @sql varchar(max);

set @sql = 'select * from tbl1 where value = ''abc''';

exec(@sql);



-- second snippet (with variable)
declare
    @sql nvarchar(max),
    @param nvarchar(100);

set @param = N'@val varchar(100)'
set @sql = N'select * from tbl1 where value = @val';

exec sp_executesql @sql, @param, @val = 'abc';
于 2013-08-05T17:21:39.687 回答