使用Oracle的DBMS_SQL包执行动态SQL语句
在某些场合下,存储过程或触发器里的SQL语句需要动态生成。Oracle的DBMS_SQL包可以用来执行动态SQL语句。本文通过一个简单的例子来展示如何利用DBMS_SQL包执行动态SQL语句:
DECLARE
v_cursor NUMBER;
v_stat NUMBER;
v_row NUMBER;
v_id NUMBER;
v_no VARCHAR(100);
v_date DATE;
v_sql VARCHAR(200);
s_id NUMBER;
s_date DATE;
BEGIN
s_id := 3000;
s_date := SYSDATE;
v_sql := 'SELECT id,qan_no,sample_date from "tblno" WHERE id > :sid and sample_date < :sdate';
v_cursor := dbms_sql.open_cursor; --打开游标;
dbms_sql.parse(v_cursor, v_sql, dbms_sql.native); --解析动态SQL语句;
dbms_sql.bind_variable(v_cursor, ':sid', s_id); --绑定输入参数;
dbms_sql.bind_variable(v_cursor, ':sdate', s_date);
dbms_sql.define_column(v_cursor, 1, v_id); --定义列
dbms_sql.define_column(v_cursor, 2, v_no, 100);
dbms_sql.define_column(v_cursor, 3, v_date);
v_stat := dbms_sql.execute(v_cursor); --执行动态SQL语句。
LOOP
EXIT WHEN dbms_sql.fetch_rows(v_cursor)<=0; --fetch_rows在结果集中移动游标,如果未抵达末尾,返回1。
dbms_sql.column_value(v_cursor, 1, v_id); --将当前行的查询结果写入上面定义的列中。
dbms_sq
相关文档:
pl/sql 提供了强大而灵活的手段来捕捉和处理程序产生的异常,从而使 oracle 的用户远离一些令人烦恼的 bug 。
pl/sql 异常处理的概念和术语
在 oracle 中所有的错误都被认为是不应该发生的异常。一个异常可能是以下 3 种情况的一种:
u 由系统产生的错误(& ......
select t.*, t.rowid from indicators t start with (t.isleaf='1' and t.rid='26020')
connect by prior t.pid = t.id order by t.inum
从叶子节点依据id=pid的关系向上递归到跟节点。
select t.*, t.rowid from indicators t start with (t.pid='0' and t.rid='26020')
connect by prior t.id = t.pid order by t.i ......
来源:不详 作者:佚名 时间:2009-9-6 17:14:04 Tags: Orac 使用方法
需求:业务逻辑在处理数据时,需要返回Message并阻止程序的继续运行。但是,在存储过程使用Oracle数据库的Raise根本无法满足现在的要求。
解决方法:
使用RAISE_APPLICATION_ERROR
RAISE_APPLICATION_ERROR ( erro ......
联接条件可在 from 或 WHERE 子句中指定,建议在 from 子句中指定联接条件。WHERE 和 HAVING 子句也可以包含搜索条件,以进一步筛选联接条件所选的行。
联接可分为以下几类:   ......
相信大家都在当心数据库的丢失,这也是每个开发者头痛的一件事件,因为正在运行的服务器及数据库也在这台服务器上。如果服务器崩溃,那么所有的数据
都不存在了,就算是你在你的机子上做了备份,那也是没有用的,为什么会这样说主要是因为本机是向互联网公开的,所以出事故的概率就比较高。最终我们可以利
用局域 ......