当前位置: 代码迷 >> SQL >> 动态传递where条件的有关问题
  详细解决方案

动态传递where条件的有关问题

热度:322   发布时间:2016-05-05 15:33:54.0
动态传递where条件的问题
例如
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 )
  相关解决方案