create or replace procedure cal(result out number) cursor c is select param,value from t_parameter; s varchar2(1000); sqlstr varchar2(1100); begin select formstring into s from t_formula; for c1 in c loop s:=replace(s,c1.param,c1.value); exit loop; sqlstr:='select '||s||' into result from dual'; execute immediate sqlstr; end;
经更改以上过程正确编译通过 CREATE OR REPLACE procedure cal(result out number) as cursor c is select param,value from F_param; s varchar2(1000); c1 c%rowtype; begin select formstring into s from F_formula; for c1 in c loop s:=replace(s,c1.param,c1.value); end loop; execute immediate 'SELECT '||s|| 'FROM DUAL' into result; end; /
我不是很熟悉plsql,不知道如何处理字符串,请大家指点迷津。
cursor c is select param,value from t_parameter;
s varchar2(1000);
sqlstr varchar2(1100);
begin
select formstring into s from t_formula;
for c1 in c loop
s:=replace(s,c1.param,c1.value);
exit loop;
sqlstr:='select '||s||' into result from dual';
execute immediate sqlstr;
end;
CREATE OR REPLACE procedure cal(result out number) as
cursor c is select param,value from F_param;
s varchar2(1000);
c1 c%rowtype;
begin
select formstring into s from F_formula;
for c1 in c loop
s:=replace(s,c1.param,c1.value);
end loop;
execute immediate 'SELECT '||s|| 'FROM DUAL' into result;
end;
/