您的位置:首页 > 数据库 > Oracle

利用oracle的动态PL/SQL对简单表达式求值

2005-06-13 13:02 603 查看
CREATE OR REPLACE FUNCTION POWER.GETRL(v_charrl in varchar2,v_noerror in char)
RETURN float
IS
v_rl float;
v_cursorID integer;
v_selectStmt varchar2 (2000);
v_dummy integer;
BEGIN
begin
v_cursorID := DBMS_SQL.OPEN_CURSOR;
v_selectStmt :=
'begin
select (' || v_charrl ||') into :rl from dual;
end;';
DBMS_SQL.PARSE(v_cursorID,v_selectStmt,DBMS_SQL.V7);
DBMS_SQL.BIND_VARIABLE(v_cursorID,':rl',v_rl);
v_dummy := DBMS_SQL.EXECUTE(v_cursorID);
DBMS_SQL.VARIABLE_VALUE(v_cursorID,':rl',v_rl);
DBMS_SQL.CLOSE_CURSOR(v_cursorID);
return v_rl;
exception
WHEN others then
DBMS_SQL.CLOSE_CURSOR(v_cursorID);
if nvl(v_noerror,'0') <> '1' then
RAISE_APPLICATION_ERROR(-20000,'表达式['||v_charrl||']运算错误');
else
return null;
end if;
end;
END;
/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: