使用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 由系统产生的错误(& ......
Oracle developer以其快速的数据处理开发而闻名,其异常处理机制也是比较完善,不可小觑。
1、 异常的优点
如果没有异常,在程序中,应当检查每个命令的成功还是失败,如
BEGIN
SELECT ...
-- check for ’no data found’ error
SELECT ...
-- check for ’no data found’ error
SEL ......
1
、安装前的准备
1.1
检查硬件
物理内存:
# grep
MemTotal /proc/meminfo
交换空间:
# grep
SwapTotal /proc/meminfo
交换空间的大小是根据物理内存的大小来设置的,物理内存少于
2G
的则交换空间设为物理内存的两倍,物理内存大于
2G
的则交换空间和物理内存大小一样。如果不符合上述规定,那么就需要 ......
装了SQL2000后安装SQL2005,虽然使用别名加以区别了,但发现2005中没有可供访问的类似企业管理器,一时冲动,卸了2000,完整安装了2005,发现还是没有企业管理器,搜索过后才发现需要安装SQLServer2005_SSMSEE.msi(即SQLServerManagerStudioExpressEdition),它提供了类似企业管理器的图形化操作界面。
装好后,SQL ......