写了一个存储过程,sql语句是拼起来的,所以用execute immediate来执行的,所以只有把结果into 到一个变量中,
代码如下:
create or replace procedure USP_GetMaxMinValue
(yDate number,mDate number,dDate varchar2)
as
b varchar(50);
begin
if mDate=2 and dDate=29 then
   execute immediate 'select max(sd_total) as value from scada_data TO_CHAR(a.sd_timestamp,''yyyy-MM-dd'')=to_char(to_date(''' || TO_CHAR(yDate) || '-' || TO_CHAR(mDate) || '-02' || ''',''yyyy-MM-dd''),''yyyy-MM-dd'')' 
   into b;
   dbms_output.put_line(b);
  
end if;end if;
end;
我的程序是在excel报表中对sql语句进行解析,只认结果集。没办法用输出参数,哪位高手有好的办法,就是让变量select 出来。谢谢!

解决方案 »

  1.   

    为什么不用函数呢?你可以试下把procedure改成function, 像这样:
    create   or   replace   function   USP_GetMaxMinValue
    (yDate   number,mDate   number,dDate   varchar2)
    return varchar2 ...
    然后用 select USP_GetMaxMinValue(yDate,mDate,dDate) from dual
      
      

  2.   

    用动态sql建个临时表搞定吧!
      

  3.   

    不太清楚楼主的意思
    试试 select b from dual
    dual 是ORACLE的公共表,一般要将一个常量或变量返回为游标,可以这样写