11gR2 中带有 Oracle DROP TABLE 的脚本
Posted
技术标签:
【中文标题】11gR2 中带有 Oracle DROP TABLE 的脚本【英文标题】:Script with Oracle DROP TABLE in 11gR2 【发布时间】:2014-12-25 19:17:30 【问题描述】:我对我的查询有点困惑。我收到错误,但它有效。 我在命令提示符下使用 ORACLE 11gR2。 我用主键和外键创建了 2 个表 dp(部门)和 em(员工)。 如果我运行脚本几次,DROP TABLE 函数会尝试删除表 2 次,但它应该只尝试一次。您能否告诉我为什么会发生这种情况。我的脚本如下。
cl scr
DROP TABLE dp CASCADE CONSTRAINT ;
L
// DROP TABLE dp PURGE ;
L
CREATE TABLE dp (
dpid NUMBER(2),
dname VARCHAR2(20));
DROP TABLE em PURGE ;
CREATE TABLE em (
emid NUMBER(2),
ename VARCHAR2(20),
dpid NUMBER(2));
ALTER TABLE dp
ADD CONSTRAINT pk_dp_dpid PRIMARY KEY (dpid) ;
ALTER TABLE em
ADD CONSTRAINT fk_em_dp_dpid FOREIGN KEY (dpid)
REFERENCES dp (dpid) ;
【问题讨论】:
嗨垫,我已经使用脚本在命令提示符下运行这些命令。在命令提示符下,如果我运行脚本它只显示结果。所以我使用了“L”来显示它在这里阅读的内容。 (L 显示它刚刚执行的行。) 【参考方案1】:不要在运行后使用L
来打印行,而是在脚本顶部使用set echo on
。
//
不是 SQL*Plus 中的注释标记,恰恰相反:/
重新执行您输入的前一个命令(显然它之后的命令被忽略了)。所以你的脚本会重新执行第一个 drop。
对 cmets 使用 --
。
【讨论】:
感谢您的回复。我尝试了这种(--)方式。但它仍然试图下降两次。有什么办法可以发给你截图吗? 用你更新的脚本和你得到的确切输出更新你的问题。 嗨垫,非常感谢您的帮助。现在好了。 发生这种情况是因为我写了两次“L”。【参考方案2】:这是一个愚蠢的错误和我的误解。 ORACLE 没有尝试 DROP 两次。它只掉了一次(应该如此),但在脚本中我写了两次“L”,所以它显示了两次尝试。无论如何,更新的代码如下所示。
cl 脚本
DROP TABLE dp CASCADE CONSTRAINT ;
L
CREATE TABLE dp (
dpid NUMBER(2),
dname VARCHAR2(20));
DROP TABLE em PURGE ;
CREATE TABLE em (
emid NUMBER(2),
ename VARCHAR2(20),
dpid NUMBER(2));
ALTER TABLE dp
ADD CONSTRAINT pk_dp_dpid PRIMARY KEY (dpid) ;
ALTER TABLE em
ADD CONSTRAINT fk_em_dp_dpid FOREIGN KEY (dpid)
REFERENCES dp (dpid) ;
感谢 Mat 和所有人。
【讨论】:
以上是关于11gR2 中带有 Oracle DROP TABLE 的脚本的主要内容,如果未能解决你的问题,请参考以下文章
oracle11gR2 手工创建基于asm存储的oracle实例
CentOS7 静默安装Oracle 11gR2(11.2.0.1)
Oracle 11gR2用gpnp profile存放ASM的spfile路径