利用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;
/
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;
/
相关文章推荐
- Oracle使用PL/SQL脚本给表结构相同的动态表添加字段
- Oracle PL/SQL如何动态调用存储过程 收藏
- 关于Oracle 的定时执行作业问题(动态PL/SQL)
- Oracle Procedure (PL/SQL) 实践归纳(3)之在Java利用Procedure获取结果集
- Oracle EBS - SQL&PL/SQL: 动态SQL和动态游标
- Oracle PL/SQL动态获取变量
- 向oracle中导入数据(利用pl/sql工具)
- 利用oracle的with语句和动态sql,自动产生用交叉表格式显示的汇总语句
- ORACLE学习之PL/SQL编程——本地动态SQL
- Oracle PL/SQL如何动态调用存储过程
- 在Oracle PL/SQL中游标声明中表名动态变化的方法
- 利用oracle动态游标实现动态SQL循环遍历
- 利用PL/SQL Developer工具在Oracle库中创建同名词Synonym的方法
- Oracle PL/SQL如何动态调用存储过程 收藏
- 利用pl/sql创建oracle的table
- 利用Oracle动态游标实现动态SQL循环遍历
- oracle pl/sql 中的动态函数
- oracle pl/sql 动态SQL
- Oracle PL/SQL使用动态SQL
- Oracle使用PL/SQL脚本给表结构相同的动态表添加字段