在PL/SQL块中不能直接执行DDL语句
(后篇批量删除表时却明明在PL/SQL块中使用了DROP,而且执行成功,厄...自打三十大板...谁来救我...)

declare
    v_string    varchar2(1000);
begin
    v_string:='create table dm_test as    select * from dm_mpg_test where nyr=20080101;';
    execute immediate v_string;
end;

如上执行将报错。

虽然PL/SQL块不可以直接执行DDL命令,但是可以通过DBMS_OUTPUT程序包执行。

declare
             v_cursor integer;
             v_sql varchar2(500);
             v_tablename varchar2(10) :='dm_test';
             v_tablecolumn varchar2(100) :='kh varchar2(10),nyr varchar(10)';
begin
     v_cursor:=dbms_sql.open_cursor;
     v_sql:='CREATE TABLE ' || v_tablename || ' ( ' || v_tablecolumn || ' )';
     dbms_sql.parse(v_cursor, v_sql, dbms_sql.v7);
     dbms_sql.close_cursor(v_cursor);
    
end;
SQL> desc dm_test;
Name Type                 Nullable Default Comments
---- ------------ -------- ------- --------
KH     VARCHAR2(10) Y                                                
NYR    VARCHAR2(10) Y

SQL>

转载于:https://blog.51cto.com/dongdong1314/207982

PL/SQL块中不能直接执行DDL语句(错误)相关推荐

  1. 在 if...elif...else 的多个语句块中只会执行一个语句块?_如果 (If) | Python 中的条件控制语句详解...

    点击上方"可乐python说"关注公众号,点击右上角 "..."选择"设为星标"第一时间获取最新分享! 前言 Hi,大家好,我是可乐,生活中 ...

  2. Pro*C 中嵌入pl/sql块

    From: http://blog.csdn.net/zistxym/article/details/5054066 /* 包含C头文件 */ #include <stdio.h> #in ...

  3. oracle 动态执行ddl语句,Oracle过程中执行动态SQL或DDL语句

    如果你用的是 Oracle 8i 及以上的版本,那简单,在过程中用 execute immediate sql_str 就行, sql_str 是一个拼凑的 SQL 语句, 如果你用的是 Oracle ...

  4. 第 1 行出现错误: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-38301: 无法对回收站中的对象执行 DDL/DML

    第 1 行出现错误: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-38301: 无法对回收站中的对象执行 DDL/DML 由于删除表空间时 出了点问题 最后一直没发删除表空间 先断 ...

  5. Oracle数据库PL/SQL块-存储函数和过程

    PL/SQL块 PL/SQL程序由三个块组成,即声明部分.执行部分.异常处理部分 结构如下: declare​ /*声明部分,在此声明变量,类型及游标*/begin​ /*执行部分,过程及sql语句, ...

  6. PL/SQL编程基础(一):PL/SQL语法简介(匿名PL/SQL块)

    PL/SQL PL/SQL是Oracle在关系数据库结构化查询语言SQL基础上扩展得到的一种过程化查询语言. SQL与编程语言之间的不同在于,SQL没有变量,SQL没有流程控制(分支,循环).而PL/ ...

  7. Oracle入门(十四.3)之创建PL / SQL块

    一.PL / SQL块结构 一个PL / SQL块由三部分组成. PL / SQL块结构部分 二.PL / SQL编译器 用高级编程语言(C,Java,PL / SQL等)编写的每个程序都必须经过检查 ...

  8. 使用Oracle SQL Developer 编写运行 PL/SQL 块

    首先, 普及一下基本概念: PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言. PL/SQL 块对应的就是一小段代码了. 适用说明: 1. ...

  9. PL/SQL Developer中,存储过程无法调试的问题解决办法

    在Oracle10中新建了一个用户,然后编写存储过程在PL/SQL Developer中调试,提示 ORA-0131: Insufficient privileges. Note: Debugging ...

最新文章

  1. Python串行运算、并行运算、多线程、多进程对比实验
  2. Hiredis库的简单使用
  3. 时序列数据库武斗大会之 OpenTSDB 篇
  4. hashmap put复杂度_你碰到过几种HashMap在高并发下出现的问题,哪些可能出现的问题...
  5. 公司技术部的罗强月薪10000,要跳槽
  6. 十个Android Material Design库
  7. Mac小知识--软件的三种安装/卸载方法,优缺点分析
  8. View系列:事件分发:滑动触摸事件分发
  9. 高德地图两点间距离计算函数
  10. RT_Thread中rtconfig.h解析
  11. 苹果MacBookPro六核i9芯32G存4TB硬SSD560X显15寸顶配51352元(公号回复“苹果AI”下载PDF资料)
  12. Linux 修改hosts文件
  13. 拼多多产品怎么引流?拼多多商品怎么引更多的流量?
  14. CP.12图、网络、关联矩阵
  15. C++数据结构实验---线性表的基本操作
  16. nginx搭建点播服务器
  17. 怎么隐藏回收站?3个方法轻松隐藏回收站!
  18. linux点阵字符显示字体颜色,点阵字体显示系列之一:ASCII码字库的显示
  19. Matlab项目实例-用电量
  20. Spark 基本知识介绍

热门文章

  1. C++ 内建函数对象
  2. C++ 模板的局限性以及解决01
  3. 树莓派c语言运行_树莓派完成简单的编程(四)
  4. SPOJ-VLATTICE Visible Lattice Points-莫比乌斯反演
  5. Linux系统编程(五)时序竞态
  6. libpcap讲解与API接口函数讲解
  7. 使用CreateFile读写文件
  8. 不愧是Alibaba技术官,java数组实现单向链表
  9. 一眼就能看懂的Java自学手册,终局之战
  10. java源代码保存在扩展名为,看完跪了