壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7181|回复: 1

为什么把create放在BEGIN...END里报错啊?/

[复制链接]
发表于 2006/6/23 11:23:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
SQL> create table xlh123(id number) storage(initial 1 m) tablespace xlhtemp;

Table created




SQL> begin
  2  create table xlh123(id number) storage(initial 1 m) tablespace xlhtemp;
  3  end;
  4  /

begin
create table xlh123(id number) storage(initial 1 m) tablespace xlhtemp;
end;

ORA-06550: 第 2 行, 第 1 列:
PLS-00103: 出现符号 "CREATE"在需要下列之一时:
begin case
   declare exit for goto if loop mod null pragma raise return
   select update while with <an identifier>
   <a double-quoted delimited-identifier> <a bind variable> <<
   close current delete fetch lock insert open rollback
   savepoint set sql execute commit forall merge
   <a single-quoted SQL string> pipe

为什么把create放在BEGIN...END里报错啊
发表于 2006/6/23 11:38:14 | 显示全部楼层
在Pl/SQL中不能执行DDL,如果要执行DDL需要适用动态SQL

静态SQLSQL与动态SQL

  Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型;另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输入时,那么Oracle的SQL引擎就无法在编译期对该程序语句进行确定,只能在用户输入一定的查询条件后才能提交给SQL引擎进行处理。通常,静态SQL采用前一种编译方式,而动态SQL采用后一种编译方式。

动态SQL:
http://bbs.ERP100.com/viewthread.php?tid=2868
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 07:17 , Processed in 0.011245 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表