- 浏览: 426769 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
xiang37:
wwwang89 写道这位大哥,你好!很感谢你分享的文章,写的 ...
iPhone调用java的webService -
wwwang89:
这位大哥,你好!很感谢你分享的文章,写的很好,适合我们新手学习 ...
iPhone调用java的webService -
QQ371496669:
能否具体讲解一下为什么StringBuilder的长度会不一样 ...
StringBuilder与StringBuffer相比为什么不是线程安全的 -
Sky_257:
请问 能用abap查询sap服务器的配置、会话、队列、spo ...
使用JCo远程调用SAP系统函数 -
xiang37:
vebasan 写道此句代码的单词有错(标红色的):prop. ...
最简单的EJB示例
DBMS_SQL
Oracle lets you to write stored procedures and anonymous PL/SQL blocks that use dynamic SQL. Dynamic SQL statements are not embedded in your source program; rather, they are stored in character strings that are input to, or built by, the program at runtime. This enables you to create more general-purpose procedures. For example, dynamic SQL lets you create a procedure that operates on a table whose name is not known until runtime.
CREATE OR REPLACE PROCEDURE copy ( source IN VARCHAR2, destination IN VARCHAR2) IS id_var NUMBER; name_var VARCHAR2(30); birthdate_var DATE; source_cursor INTEGER; destination_cursor INTEGER; ignore INTEGER; BEGIN -- Prepare a cursor to select from the source table: source_cursor := dbms_sql.open_cursor; DBMS_SQL.PARSE(source_cursor, 'SELECT id, name, birthdate FROM ' || source, DBMS_SQL.native); DBMS_SQL.DEFINE_COLUMN(source_cursor, 1, id_var); DBMS_SQL.DEFINE_COLUMN(source_cursor, 2, name_var, 30); DBMS_SQL.DEFINE_COLUMN(source_cursor, 3, birthdate_var); ignore := DBMS_SQL.EXECUTE(source_cursor); -- Prepare a cursor to insert into the destination table: destination_cursor := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(destination_cursor, 'INSERT INTO ' || destination || ' VALUES (:id_bind, :name_bind, :birthdate_bind)', DBMS_SQL.native); -- Fetch a row from the source table and insert it into the destination table: LOOP IF DBMS_SQL.FETCH_ROWS(source_cursor)>0 THEN -- get column values of the row DBMS_SQL.COLUMN_VALUE(source_cursor, 1, id_var); DBMS_SQL.COLUMN_VALUE(source_cursor, 2, name_var); DBMS_SQL.COLUMN_VALUE(source_cursor, 3, birthdate_var); -- Bind the row into the cursor that inserts into the destination table. You -- could alter this example to require the use of dynamic SQL by inserting an -- if condition before the bind. DBMS_SQL.BIND_VARIABLE(destination_cursor, ':id_bind', id_var); DBMS_SQL.BIND_VARIABLE(destination_cursor, ':name_bind', name_var); DBMS_SQL.BIND_VARIABLE(destination_cursor, ':birthdate_bind', birthdate_var); ignore := DBMS_SQL.EXECUTE(destination_cursor); ELSE -- No more rows to copy: EXIT; END IF; END LOOP; -- Commit and close all cursors: COMMIT; DBMS_SQL.CLOSE_CURSOR(source_cursor); DBMS_SQL.CLOSE_CURSOR(destination_cursor); EXCEPTION WHEN OTHERS THEN IF DBMS_SQL.IS_OPEN(source_cursor) THEN DBMS_SQL.CLOSE_CURSOR(source_cursor); END IF; IF DBMS_SQL.IS_OPEN(destination_cursor) THEN DBMS_SQL.CLOSE_CURSOR(destination_cursor); END IF; RAISE; END; /
例如,动态SQL可以让你创建一个程序上的表的名称,直到运行时才知道。
当然动态SQL有还有一种可以使用动态游标的方式来实现,但是在Oracle Froms里面不支持,改用上面的方式即可。
It's from http://www.csee.umbc.edu/portal/help/oracle8/server.815/a68001/dbms_sql.htm
DECLARE vc_msg BINARY_INTEGER; vc_istry VARCHAR2(1); vc_tempSql VARCHAR2(200); my_cur integer; num integer; vc_mrn VARCHAR2(5); BEGIN my_cur := dbms_sql.open_cursor; --创建游标 vc_tempSql := 'select t.mrn from temp_pl_m_asf t where t.asfno = 1000000001'; dbms_sql.parse(my_cur, vc_tempSql, 1); dbms_sql.define_column(my_cur,1,vc_mrn,5); num := dbms_sql.execute(my_cur); loop if dbms_sql.fetch_rows(my_cur) > 0 then begin dbms_sql.column_value(my_cur, 1, vc_mrn); end; else exit; end if; end loop; dbms_sql.close_cursor(my_cur); END;创建动态游标
发表评论
-
[转]Oracle聚簇表
2014-08-07 23:59 1246Oracle 支持两种类型的聚簇:索引聚簇和哈希聚簇 ... -
创建DBLINK
2015-04-11 15:20 0create shared public databas ... -
SQL语句
2013-01-06 12:26 922Case When的用法; SQLSTATE = 2100 ... -
双层游标循序,导致ORA-01001错误的解决方法
2012-03-23 15:19 2677下面的代码是双层游标循环: EXEC SQL ... -
Oracle中dual表的用途
2011-11-03 11:19 918dual是一个虚拟表, ... -
SQL游标中Order By的使用限制
2011-10-26 11:29 1677在创建游标的SELECT语句中使用了Order By子句 ... -
Oracle数据库小知识
2011-09-28 15:09 1215在oralce中,我们有时误删了某些数据或者删除了某些表;这 ... -
NVARCHAR2和VARCHAR2的区别
2011-09-08 15:04 909VARCHAR2是Oracle提供的特定数据类型,Oracle ... -
Oracle新建用户、角色,授权,建表空间
2011-08-26 09:20 920转载 Oracle数据库 ... -
Oracle 数据类型及存储方式
2011-06-24 12:39 1849it's from http://www.iteye.com/ ... -
Oracle SQL 内置函数大全(三)
2011-05-23 09:51 71861.MAX(DISTINCT|ALL) 求最大值,A ... -
Oracle SQL 内置函数大全(二)
2011-05-23 09:46 73931.SIGH 返回双曲正弦的值 SQL ... -
Oracle SQL 内置函数大全(一)
2011-05-23 09:42 867it's from http://www.gissky.com ... -
ORACLE解锁
2011-05-09 09:57 663select object_name as 对象名称,s ... -
dbcp的properties文件保存一下
2011-01-26 15:08 1203#连接设置 jdbc.driverClassName= ... -
Mysql 的 Cascade/Restrict/No action
2011-01-12 10:05 2450外键约束对子表的含义: 如果在父表中找不到候选键,则不允 ... -
sql 语句复习
2010-11-11 13:43 8411.select distinct name from ... -
查看mssql版本
2010-11-11 13:42 10941.查看版本及补丁号select server ... -
左连接与右连接的区别
2010-11-11 13:40 1106左联时,会全显左表的数据,如果右表没有满足的条件的数据为N ... -
脏读、不可重复读、幻影读的理解
2010-11-11 13:40 28491 脏读:当事务1修改了一条记录,没有提交时,事务2读取了该记 ...
相关推荐
在Oracle数据库中,`DBMS_SQL`包是一个功能强大的工具,用于执行动态SQL语句。它提供了处理动态SQL语句的能力,使得开发人员能够灵活地构建和执行SQL语句,而不需要预先定义表结构或SQL文本。`DBMS_SQL`主要通过以下...
DBMS_SQL包是Oracle提供的一个内置包,用于在PL/SQL程序中构造和执行动态SQL语句。自Oracle 7.1版本(即PL/SQL 2.1版)开始引入动态SQL功能以来,DBMS_SQL包经过多次迭代不断完善其功能。如在Oracle 8.0版本中引入了...
在Oracle数据库系统中,DBMS_SQL是一个非常重要的包,它提供了动态执行SQL语句的功能,这对于开发复杂的数据库应用或者需要在运行时构建SQL语句的情况非常有用。DBMS_SQL允许我们处理那些在编译时未知的SQL语句,极...
DBMS_SQL 是 ORACLE 数据库提供的一种封装过程,它允许开发者在 PL/SQL 程序中执行 DDL 语句和动态的 SQL 语句。DBMS_SQL 的应用可以解决在项目开发中对用户管理和 DDL 使用的问题。 静态联接和动态联接是两种不同...
Oracle数据库系统提供了强大的XML处理能力,这主要体现在其内置的几个PL/SQL包上,如DBMS_XMLDOM、DBMS_XMLPARSER和DBMS_XMLQUERY。这些包为开发者提供了处理XML文档的一整套工具,使得在数据库环境中进行XML数据的...
Oracle 中动态 SQL 可以通过本地动态 SQL 来执行,也可以通过 DBMS_SQL 包来执行。 本地动态 SQL 是使用 EXECUTE IMMEDIATE 语句来实现的。例如,根据用户输入的表名及字段名等参数动态建表。 create or replace ...
Oracle 数据库中使用 dbms_stats 包手动收集统计信息 在 Oracle 数据库中,dbms_stats 包提供了一种手动收集统计信息的方式,包括基于表、用户和索引的统计信息。通过使用 dbms_stats 包,我们可以手动收集统计信息...
Oracle数据库系统中,`DBMS_LOB`是一个重要的PL/SQL包,专门用于处理大型对象(LOBs,Large Object)。LOBs是Oracle提供的一种数据类型,用于存储大量数据,如文本、图像、音频或视频文件等。这个包包含了各种过程和...
#### 使用DBMS_SQL包执行动态SQL `DBMS_SQL`是Oracle提供的一个包,用于执行动态SQL语句。这种方式非常适合在运行时构建SQL语句。 - **示例**: ```sql CREATE OR REPLACE PROCEDURE my_execute(sql_string IN ...
标题中的问题“ORACLE SYS.DBMS_REGISTRY_SYS has errors”指的是在Oracle数据库系统中,系统包BODY `SYS.DBMS_REGISTRY_SYS` 出现错误,导致了一系列的PL/SQL调用失败。这种错误通常与数据库的元数据注册功能有关,...
`DBMS_STATS.GATHER_TABLE_STATS` 是 Oracle 数据库中的一个重要过程,主要用于收集表、列和索引的统计信息,这些统计信息对于优化器选择合适的执行计划至关重要。该过程允许数据库管理员通过一系列参数来灵活控制...
**DBMS_SQL**是Oracle提供的一个包,专门用于动态执行SQL语句。它提供了对SQL语句的解析、绑定变量、执行、获取结果等操作的支持。 #### 示例1:动态执行删除语句 ```sql CREATE OR REPLACE PROCEDURE demo(salary...
### DBMS_OBFUSCATION_TOOLKIT:Oracle 数据库中的加密与解密工具包 DBMS_OBFUSCATION_TOOLKIT是Oracle数据库提供的一种用于数据加密解密的强大工具包,自Oracle 8i版本开始引入。它支持多种加密算法,如DES、...
在Oracle数据库中,`DBMS_JOB`包提供了一种机制,用于创建和管理后台作业(Job),这些作业可以在特定的时间或按一定的时间间隔执行。这对于需要定期执行的任务非常有用,比如数据清理、统计报告生成、备份等。 ###...
在Oracle数据库系统中,`DBMS_RANDOM`是一个非常实用的包,它提供了生成随机数和随机字符串的功能。这个包在各种场景下都有广泛的应用,比如在测试数据的生成、模拟随机行为或者创建伪随机数据时。我们将深入探讨`...
DBMS_OUTPUT.put_line('l_sql_tune_task_id: ' || l_sql_tune_task_id); END; ``` - **从游标缓存中获取SQL**: ```plsql DECLARE l_sql_tune_task_id VARCHAR2(100); BEGIN l_sql_tune_task_id := DBMS_...
DBMS_XPLAN是Oracle提供的一个用于查看SQL计划,包括执行计划和解释计划的包;在以前查看SQL执行计划的时候,我都是使用set autotrace命令,不过现在看来,DBMS_XPLAN包给出了更加简化的获取和显示计划的方式。 这5...
在Oracle数据库环境中,`dbms_java`包提供了一系列功能强大的工具,用于管理和控制Java应用程序的安全性。这对于那些在Oracle环境中部署了Java应用程序的企业来说尤为重要。本文将详细介绍如何利用`dbms_java`包来...
DBMS_JOB包则是一个PL/SQL包,用于调度和执行数据库中的作业,如定期备份或维护任务。 在上述应用实例中,RMAN被用来做数据库的在线备份,以满足业务连续性的需求。在线备份允许数据库在备份过程中保持开放状态,不...
DBMS_LOCK是Oracle数据库系统中的一个内置包,用于在用户会话之间实现锁的管理,以确保并发操作的安全性和数据一致性。这篇博文深入探讨了DBMS_LOCK的功能、使用方法以及在实际应用中的重要性。 首先,我们要理解...