日期:2014-05-17 浏览次数:21154 次
--oracle 动态拼接语句并返回查询结果集
--以前用MS-SQL 现在对oracle中的语句拼接没有经验
--希望各位大侠不吝赐教
declare
q varchar2(4000);
begin
q := 'select *';
q := q || ' from BB_C15';
q := q || ' Where TAIZHDJYF =' || '2013';
q := q || ' and CHENBDW = ' || '14';
if '12' != '' then
q := q || ' and qiymch = ' || '';
end if;
if '12' != '' then
q := q || ' and FeiWLB = ' || '';
end if;
execute immediate q ;
end;
create table test(id number, name varchar2(50), sal number);
insert into test values(1066, 'xiaoli', 3000);
insert into test values(1067, 'xiaowang', 3500);
insert into test values(1068, 'xiaozh', 3800);
select * from test;
declare q varchar2(4000);
rec test%rowtype;
begin
q := 'select * from TEST Where ID > 1066 ';
if 1 <> 3 then
q := q
------解决方案--------------------
'and sal = 3500';
end if;
dbms_output.put_line(q); --你可以把拼接的字符串打印出来看看对不对,能不能执行。
execute immediate q
into rec;
--用select做动态查询时,要加into去获得查询出来的值,我定义了一个记录类型的变量,能获得一条的值。
dbms_output.put_line('rec: '
------解决方案--------------------
rec.name
------解决方案--------------------
' '
------解决方案--------------------
rec.sal);
end;