写了一个存储过程,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 出来。谢谢!
代码如下:
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 出来。谢谢!
create or replace function USP_GetMaxMinValue
(yDate number,mDate number,dDate varchar2)
return varchar2 ...
然后用 select USP_GetMaxMinValue(yDate,mDate,dDate) from dual
试试 select b from dual
dual 是ORACLE的公共表,一般要将一个常量或变量返回为游标,可以这样写