首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从变量‘'create tablespace’

从变量‘'create tablespace’
EN

Stack Overflow用户
提问于 2012-02-16 01:44:28
回答 2查看 1.4K关注 0票数 2

我也想

代码语言:javascript
运行
复制
CREATE TABLESPACE l_tablespace ...

其中l_tablespace定义为

代码语言:javascript
运行
复制
VARIABLE l_tablespace VARCHAR2( 100 CHAR )
EXEC l_tablespace := 'my_tablespace';

Not CREATE TABLESPACE l_tablespace ...CREATE TABLESPACE :l_tablespace ...都不能工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-16 01:51:00

您可以使用execute immediate实现这一点

代码语言:javascript
运行
复制
execute immediate 'create tablespace '||l_tablespace||'  ...';
票数 5
EN

Stack Overflow用户

发布于 2012-02-16 07:29:48

您不能在DDL中使用绑定变量,即使在动态SQL中也是如此,这就是您第二次尝试失败的原因,也是您必须使用连接的原因,如@bunting所示。(显示你得到的错误通常是有帮助的,而不仅仅是“不工作”)。

如果您正在从SQL*Plus运行脚本,并且希望能够在运行时指定表空间,则可以改为使用define a substitution variable

代码语言:javascript
运行
复制
DEFINE l_tablespace=my_tablespace
CREATE TABLESPACE &l_tablespace ...

然后,可以在同一文件中的后续命令中重用相同的变量,例如在新的表空间中创建表。

您还可以从使用ACCEPT运行脚本的用户处获取该值。或者使用从命令行传递的位置参数(&1等),尽管我在这里不太习惯这样做。

(不确定ACCEPT在SQL Developer中是否可以工作,但我认为其余的都可以)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9298451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档