我想
CREATE TABLESPACE l_tablespace ...
其中l_tablespace定义为
VARIABLE l_tablespace VARCHAR2( 100 CHAR )
EXEC l_tablespace := 'my_tablespace';
不CREATE TABLESPACE l_tablespace ...
或CREATE TABLESPACE :l_tablespace ...
不起作用。
答案 0 :(得分:5)
您可以使用execute immediate
execute immediate 'create tablespace '||l_tablespace||' ...';
答案 1 :(得分:2)
您无法在DDL中使用绑定变量,即使在动态SQL中也是如此,这就是为什么您的第二次尝试不起作用以及为什么必须使用@bunting显示的连接。 (通常有助于显示您所获得的错误,而不仅仅是“无法正常工作”。
如果您从SQL * Plus运行脚本并希望能够在运行时指定表空间,则可以define a substitution variable代替:
DEFINE l_tablespace=my_tablespace
CREATE TABLESPACE &l_tablespace ...
然后可以在同一文件中的子序列命令中重用相同的变量,例如在新的表空间中创建表。
您还可以使用ACCEPT
从运行脚本的用户处获取值。或者使用从命令行传递的位置参数(&1
等),尽管我在这里不太习惯。
(不确定ACCEPT
是否适用于SQL Developer,但我认为其余的都可以。)