oracle 游标 内联,oracle – EXEC_SQL,EXECUTE IMMEDIATE,DBMS_SQL和内联SQL之间的区别
1)您不能在PL / SQL块内执行直接DDL.
BEGIN
CREATE TABLE TEST AS (
SELECT * FROM FND_USER
);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/
产量:
PLS-00103: Encountered the symbol "CREATE" when expecting one of the following:
2)EXECUTE IMMEDIATE(及其姐妹DBMS_SQL)用于在PL / SQL块内执行SQL.这些与“常规”SQL的不同之处在于它们实际上使用完全不同的SQL引擎(在PL / SQL的情况下它在oracle进程中运行)来计算.这就是为什么我们这么多人宣讲“如果你能在SQL中做到这一点,就不要在PL / SQL中做到”.
即使这两个选项也有所不同. EXECUTE IMMEDIATE快速而简单但有点愚蠢. DBMS_SQL稍微复杂一点,但为开发人员提供了更多的控制权.
例如,这个示例基本上描述了表的列:
declare
c number;
d number;
col_cnt integer;
f boolean;
rec_tab dbms_sql.desc_tab;
col_num number;
procedure print_rec(rec in dbms_sql.desc_rec) is
begin
dbms_output.new_line;
dbms_output.put_line('col_type = '
|| rec.col_type);
dbms_output.put_line('col_maxlen = '
|| rec.col_max_len);
dbms_output.put_line('col_name = '
|| rec.col_name);
dbms_output.put_line('col_name_len = '
|| rec.col_name_len);
dbms_output.put_line('col_schema_name = '
|| rec.col_schema_name);
dbms_output.put_line('col_schema_name_len = '
|| rec.col_schema_name_len);
dbms_output.put_line('col_precision = '
|| rec.col_precision);
dbms_output.put_line('col_scale = '
|| rec.col_scale);
dbms_output.put('col_null_ok = ');
if (rec.col_null_ok) then
dbms_output.put_line('true');
else
dbms_output.put_line('false');
end if;
end;
begin
c := dbms_sql.open_cursor;
dbms_sql.parse(c, 'select * from fnd_user', dbms_sql.native);
d := dbms_sql.execute(c);
dbms_sql.describe_columns(c, col_cnt, rec_tab);
/*
* Following loop could simply be for j in 1..col_cnt loop.
* Here we are simply illustrating some of the PL/SQL table
* features.
*/
col_num := rec_tab.first;
if (col_num is not null) then
loop
print_rec(rec_tab(col_num));
col_num := rec_tab.next(col_num);
exit when (col_num is null);
end loop;
end if;
dbms_sql.close_cursor(c);
end;
/
Source
由于DBMS_SQL允许我们打开和操作PL / SQL块在结果中运行的游标,因此很难在EXECUTE IMMEDIATE块中重现(难度级别:没有从ALL_TAB_COLS中选择这只是为了提供信息: ).
3)EXEC_SQL是上述DBMS_SQL的表单特定版本.明智地使用它.
oracle 游标 内联,oracle – EXEC_SQL,EXECUTE IMMEDIATE,DBMS_SQL和内联SQL之间的区别相关推荐
- oracle游标的说法,oracle游标练习题.doc
oracle游标练习题 oracle游标练习题 当查询返回结果超过一行时,就需要一个显式游标,此时用户不能使用select into语句.PL/SQL管理隐式游标,当查询开始时隐式游标打开,查询结束时 ...
- oracle 游标非空,oracle 游标判空步骤
oracle 游标判空方法 create or replace package TAL_TEST is TYPE myCursorType IS REF CURSOR; --测试空游标 PROCEDU ...
- oracle 游标查询数据库,Oracle数据库使用游标查询结果集所有数据
--Oracle使用游标查询结果集所有数据 DECLARE myTabelName NVARCHAR2(200):=''; --表名 myTableRowComment NVARCHAR2(200): ...
- 使用oracle 游标修改数据,Oracle 函数施行修改和游标传递
Oracle 函数执行修改和游标传递 ORA-14551:不能在查询语句中执行dml语句,开始误以为函数里不能执行DML或DDL语句,后查到前辈通过采用自治事务解决,在此基础上演例 传递SQL语句对数 ...
- oracle 游标的替代,Oracle中replace函数和translate函数以及简单的游标
简要比较: replace:字符串级别的代替 如:SELECT REPLACE('acdd','cd','ef') FROM dual; →aefd translate:字符级别的代替 如:SELEC ...
- Oracle游标有何用,Oracle游标使用方法有哪些?
在PL/SQL中依然可以使用UPDATE和DELETE语句更新或删除数据行.显式游标只有在需要获得多行数据的情况下使用.PL/SQL提供了仅仅使用游标就可以执行删除或更新记录的方法. UPDATE或D ...
- oracle 游标循环 while,Oracle的游标使用方法 三种循环
例: 游标 LOOP循环游标 SET SERVERIUTPUT ON DECLARE R_emp EMP%ROWTYPE; CURSOR c_emp IS SELECT * FROM emp; BEG ...
- oracle游标缓存,【oracle】游标——数据的缓存区
游标的使用可以让用户想错做数组一样操作查询出来的数据集,他提供了一种从集合性质的结果中提取单条记录的手段. 1.静态游标和REF游标. 2.静态游标分为显示游标(使用前必须有着明确的游标声明和定义)和 ...
- oracle游标添加数据,Oracle使用游标更新数据
1. 使用游标修改数据 定义一个游标,游标名称为 mycursor 更新scott用户中emp表中empno为7369的销售额 -- Created on 2015/11/30 by ZHANW de ...
最新文章
- 设置tomcat服务为80端口,tomcat虚拟主机,tomcat日志
- nginx 知识点 :ctx_index and index
- 正能量,让网络空间释放更多善意
- 创建hugo博客_如何创建您的第一个Hugo博客:实用指南
- 中文版php.ini
- 华为蕊片鸿蒙OS尺寸,华为P50真机曝光:麒麟芯片、鸿蒙OS确定,双孔再见!
- 【极客思考】计算机网络:Wireshark抓包分析TCP中的三次握手与四次挥手
- 倒行逆施的贾金斯先生(转)
- [管理]《高绩效人士的五项管理》 -- 李践
- 一篇通俗易懂的文章初探NIO
- c++实现排列与组合
- “钓鱼”事件频发,您的企业邮件安全吗?
- 一个完整的springboot项目所需要导入的依赖合集(方便查找)
- PayPal开发文档整理(8)——PayPal支付产品和解决方案
- css设置图片、边框、背景样式
- java和以太坊交互_Android怎么和以太坊智能合约交互
- can-utils使用
- GSM/GPRS模块学习
- 最新 ICCV | 35个GAN应用主题梳理,最全GAN生成对抗论文汇总
- image-conversion压缩图片
热门文章
- c语言矩阵的乘积,c语言矩阵相乘
- vue 父页面中的方法 调用_解决Vue中页面成功渲染数据undefined的问题
- TiP:湖大于峰组综述​病原体分泌的宿主模拟物在植物病害发展中的新作用!...
- Nature综述:微生物的衰老与寿命
- 疯狂的消化之旅|消化系统简介
- SourceTracker—微生物来源分析
- 宏基因组实战6. 不比对快速估计基因丰度Salmon
- pandas使用sort_values函数和groupby函数获取每个分组数值最小的前N行数据(n rows with smallest column value in each group)
- R语言ggplot2可视化绘制线图(line plot)、使用gghighlight包突出高亮满足条件的线图、并保留其它线图的色彩(而不是灰色)自定义非高亮线图的透明度
- R语言ggplot2可视化并自定义配置图例的位置到可视化图像的顶部、配置折叠成两行显示图例、并添加图像形状的子图(ggplot2 legend in two rows with guides fill