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之间的区别相关推荐

  1. oracle游标的说法,oracle游标练习题.doc

    oracle游标练习题 oracle游标练习题 当查询返回结果超过一行时,就需要一个显式游标,此时用户不能使用select into语句.PL/SQL管理隐式游标,当查询开始时隐式游标打开,查询结束时 ...

  2. oracle 游标非空,oracle 游标判空步骤

    oracle 游标判空方法 create or replace package TAL_TEST is TYPE myCursorType IS REF CURSOR; --测试空游标 PROCEDU ...

  3. oracle 游标查询数据库,Oracle数据库使用游标查询结果集所有数据

    --Oracle使用游标查询结果集所有数据 DECLARE myTabelName NVARCHAR2(200):=''; --表名 myTableRowComment NVARCHAR2(200): ...

  4. 使用oracle 游标修改数据,Oracle 函数施行修改和游标传递

    Oracle 函数执行修改和游标传递 ORA-14551:不能在查询语句中执行dml语句,开始误以为函数里不能执行DML或DDL语句,后查到前辈通过采用自治事务解决,在此基础上演例 传递SQL语句对数 ...

  5. oracle 游标的替代,Oracle中replace函数和translate函数以及简单的游标

    简要比较: replace:字符串级别的代替 如:SELECT REPLACE('acdd','cd','ef') FROM dual; →aefd translate:字符级别的代替 如:SELEC ...

  6. Oracle游标有何用,Oracle游标使用方法有哪些?

    在PL/SQL中依然可以使用UPDATE和DELETE语句更新或删除数据行.显式游标只有在需要获得多行数据的情况下使用.PL/SQL提供了仅仅使用游标就可以执行删除或更新记录的方法. UPDATE或D ...

  7. oracle 游标循环 while,Oracle的游标使用方法 三种循环

    例: 游标 LOOP循环游标 SET SERVERIUTPUT ON DECLARE R_emp EMP%ROWTYPE; CURSOR c_emp IS SELECT * FROM emp; BEG ...

  8. oracle游标缓存,【oracle】游标——数据的缓存区

    游标的使用可以让用户想错做数组一样操作查询出来的数据集,他提供了一种从集合性质的结果中提取单条记录的手段. 1.静态游标和REF游标. 2.静态游标分为显示游标(使用前必须有着明确的游标声明和定义)和 ...

  9. oracle游标添加数据,Oracle使用游标更新数据

    1. 使用游标修改数据 定义一个游标,游标名称为 mycursor 更新scott用户中emp表中empno为7369的销售额 -- Created on 2015/11/30 by ZHANW de ...

最新文章

  1. 设置tomcat服务为80端口,tomcat虚拟主机,tomcat日志
  2. nginx 知识点 :ctx_index and index
  3. 正能量,让网络空间释放更多善意
  4. 创建hugo博客_如何创建您的第一个Hugo博客:实用指南
  5. 中文版php.ini
  6. 华为蕊片鸿蒙OS尺寸,华为P50真机曝光:麒麟芯片、鸿蒙OS确定,双孔再见!
  7. 【极客思考】计算机网络:Wireshark抓包分析TCP中的三次握手与四次挥手
  8. 倒行逆施的贾金斯先生(转)
  9. [管理]《高绩效人士的五项管理》 -- 李践
  10. 一篇通俗易懂的文章初探NIO
  11. c++实现排列与组合
  12. “钓鱼”事件频发,您的企业邮件安全吗?
  13. 一个完整的springboot项目所需要导入的依赖合集(方便查找)
  14. PayPal开发文档整理(8)——PayPal支付产品和解决方案
  15. css设置图片、边框、背景样式
  16. java和以太坊交互_Android怎么和以太坊智能合约交互
  17. can-utils使用
  18. GSM/GPRS模块学习
  19. 最新 ICCV | 35个GAN应用主题梳理,最全GAN生成对抗论文汇总
  20. image-conversion压缩图片

热门文章

  1. c语言矩阵的乘积,c语言矩阵相乘
  2. vue 父页面中的方法 调用_解决Vue中页面成功渲染数据undefined的问题
  3. TiP:湖大于峰组综述​病原体分泌的宿主模拟物在植物病害发展中的新作用!...
  4. Nature综述:微生物的衰老与寿命
  5. 疯狂的消化之旅|消化系统简介
  6. SourceTracker—微生物来源分析
  7. 宏基因组实战6. 不比对快速估计基因丰度Salmon
  8. pandas使用sort_values函数和groupby函数获取每个分组数值最小的前N行数据(n rows with smallest column value in each group)
  9. R语言ggplot2可视化绘制线图(line plot)、使用gghighlight包突出高亮满足条件的线图、并保留其它线图的色彩(而不是灰色)自定义非高亮线图的透明度
  10. R语言ggplot2可视化并自定义配置图例的位置到可视化图像的顶部、配置折叠成两行显示图例、并添加图像形状的子图(ggplot2 legend in two rows with guides fill