oracle笔记-动态SQL
发布时间:2006-06-28 09:15
点击:
[Page: ]
16.2 如何使用动态SQL
DBMS_SQL
1. 调用OPEN_CURSOR获得一个游标句柄;
2. 调用PARSE分析语句。一个游标句柄可以用于多条不同的已分析语句,但一个时间点仅一条有效;
3. 调用BIND_VARIABLE或BIND_ARRAY来提供语句的任何输入;
4. 若是一个查询(SELECT语句),调用DIFINE_COLUMN或DEFINE_ARRAY来告知Oracle如何返回结果;
5. 调用EXECUTE执行语句;
6. 若是一个查询,调用FETCH_ROWS来读取数据。可以使用COLUMN_VALUE从SELECT列表根据位置获得这些值;
7. 否则,若是一个PL/SQL块或带有RETURN子句的DML语句,可以调用VARIABLE_VALUE从块中根据变量名获得OUT值;
8. 调用CLOSE_CURSOR.
注意这里对任何异常都应该处理,以关闭游标,防止泄露资源。
本地动态SQL
EXECUTE IMMEDIATE ‘语句’
[INTO {变量1, 变量2, … 变量N | 记录体}]
[USING [IN | OUT | IN OUT] 绑定变量1, … 绑定变量N]
[{RETURNING | RETURN} INTO 输出1 [, …, 输出N]…];
注意本地动态SQL仅支持弱类型REF CURSOR,即对于REF CURSOR,不支持BULK COLLECT.
16.3 最后说明
动态SQL的负面:破坏了依赖链、代码更脆弱、很难调优。
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
|
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
|