oracle存储过程中动态sql拼接,与静态sql传值有什么区别

Fairy_Lyk 发布于 2016/09/28 15:04
阅读 755
收藏 0

create or replace procedure testlist(

  type_ in  varchar2,
  start_ in  varchar2,
 result_data out sys_refcursor --返回集合
 ) as
 where_ varchar2(200);
 sqls varchar2(2000);
begin
     sqls:='select * from (select rownum rn,t.client_id,  t.client_name,t.large_address_name
        from ZD_TOBACCO_RECEIVE t ) t where 1=1';
     if type_ ='1'  then
       sqls:=sqls||'and t.client_id='''||start_||'''';
       where_  :='and t.client_id='''||start_||'''';

        dbms_output.put_line(where_);

        打印内容:and t.client_id='1'

     end if;

     open result_data for sqls;


      --open result_data for
      -- select * from (select rownum rn,t.client_id,  t.client_name,t.large_address_name

     --from ZD_TOBACCO_RECEIVE t ) t where 1=1  and t.client_id='1';

     --open result_data fo
     -- select * from (select rownum rn,t.client_id,  t.client_name,t.large_address_name
     --from ZD_TOBACCO_RECEIVE t  ) t where 1=1 ||where_ ;(用这种方式执行时报一下错误,改怎么修改?以上方法有什么区别)


end testlist;
加载中
返回顶部
顶部