例如
declare @where nvarchar(500)
select * from table where @where
这么写是执行不了的
我的意思就是
@where 是动态传递进来 如: set @where ='1=1' 就是这么个意思 @where 会很负责 就是将所有的条件封装成字符串来传递
那么在这种情况下,如何才能通过呢?
求高手解答,谢谢
------解决方案--------------------
什么数据库?传递什么条件,举例说明,一般是通过字符串累加生成SQL语句再动态执行
------解决方案--------------------
试试这个,ASA数据库:
drop procedure ttt;
create procedure ttt (in mywhere varchar(500))
begin
DECLARE err_notfound
EXCEPTION FOR SQLSTATE '02000';
declare qry LONG VARCHAR;
declare fname CHAR(60);
set qry = 'SELECT fname FROM customer where ' || mywhere;
begin
declare csr CURSOR using qry;
open csr;
lp: LOOP
fetch next csr INTO fname;
if SQLCODE = err_notfound THEN LEAVE lp END IF;
select fname;
END LOOP;
close csr;
end
end;
call ttt('1=1');
只作简单示例。
------解决方案--------------------
EXEC (“select * from table where ” + @where )