declare @sql varchar(1000),@str varchar(20) set @str='''ca'',''ks''' set @sql='select * from authors where state in ('+@str+')' exec(@sql) set @str='61,71' set @sql='select * from table1 where number1 in ('+@str+')'
use pubs go declare @vsql varchar(4000),@str nvarchar(2000) set @vsql = '''ca'',''ks''' --这里打印没问题 出来的是'ca','ks' print @vsql --这里把值传进去。照例说应该和最下面的那条SQL语句出来是同样的结果啊。但为什么是空呢? select @str = 'select * from authors where state in ('+@vsql+')' print @strexec(@str)
--oralce的存储过程 create or replace PROCEDURE TEMP(vsql varchar2,RetCursor OUT myCursor) is begin exec('select * from table1 where number1 in ('+vsql+')'; end;
set @str='''ca'',''ks'''
set @sql='select * from authors where state in ('+@str+')'
exec(@sql)
set @str='61,71'
set @sql='select * from table1 where number1 in ('+@str+')'
go
declare @vsql varchar(4000),@str nvarchar(2000)
set @vsql = '''ca'',''ks'''
--这里打印没问题 出来的是'ca','ks'
print @vsql
--这里把值传进去。照例说应该和最下面的那条SQL语句出来是同样的结果啊。但为什么是空呢?
select @str = 'select * from authors where state in ('+@vsql+')'
print @strexec(@str)
create or replace PROCEDURE TEMP(vsql varchar2,RetCursor OUT myCursor)
is
begin
exec('select * from table1 where number1 in ('+vsql+')';
end;