我也想
CREATE TABLESPACE l_tablespace ...其中l_tablespace定义为
VARIABLE l_tablespace VARCHAR2( 100 CHAR )
EXEC l_tablespace := 'my_tablespace';Not CREATE TABLESPACE l_tablespace ...和CREATE TABLESPACE :l_tablespace ...都不能工作。
发布于 2012-02-16 01:51:00
您可以使用execute immediate实现这一点
execute immediate 'create tablespace '||l_tablespace||'  ...';发布于 2012-02-16 07:29:48
您不能在DDL中使用绑定变量,即使在动态SQL中也是如此,这就是您第二次尝试失败的原因,也是您必须使用连接的原因,如@bunting所示。(显示你得到的错误通常是有帮助的,而不仅仅是“不工作”)。
如果您正在从SQL*Plus运行脚本,并且希望能够在运行时指定表空间,则可以改为使用define a substitution variable:
DEFINE l_tablespace=my_tablespace
CREATE TABLESPACE &l_tablespace ...然后,可以在同一文件中的后续命令中重用相同的变量,例如在新的表空间中创建表。
您还可以从使用ACCEPT运行脚本的用户处获取该值。或者使用从命令行传递的位置参数(&1等),尽管我在这里不太习惯这样做。
(不确定ACCEPT在SQL Developer中是否可以工作,但我认为其余的都可以)。
https://stackoverflow.com/questions/9298451
复制相似问题