如何使用sql def变量

时间:2013-07-03 04:30:56

标签: sql oracle

我正在尝试在一个简单的sql脚本中声明一个变量来在模式中创建一些表,但它不起作用。

这是我的sql脚本的片段:

DEF SCHEMA_NAME = MY_SCHEMA;

CREATE TABLE &SCHEMA_NAME.BOOK
(
    BOOK_ID            INTEGER
);

创建一个表名为MY_SCHEMABOOK的表,而不是模式BOOK中名为MY_SCHEMA的表。

Oracle Sql Developer中的脚本输出说:

old:CREATE TABLE &SCHEMA_NAME.BOOK
(
    BOOK_ID            INTEGER
)
new:CREATE TABLE MY_SCHEMABOOK
(
    BOOK_ID            INTEGER
)
table MY_SCHEMABOOK created.

如果有帮助的话。此外,似乎将它更改为&SCHEMA_NAME..BOOK确实使它像我想要的那样工作,但是必须放两个句点对我来说没有意义。谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

SET CON [CAT] {。 | c | ON | OFF}

     

设置用于终止替换变量引用的字符   当SQL * Plus以其他方式将下一个字符解释为一个部分时   变量名称。

     

SQL * Plus将CONCAT的值重置为打开CONCAT的时间段。

http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12040.htm#sthref2722

SQL Developer以相同的方式工作 - 您的第一个句点被解释为替换变量终止符。因此,在这种情况下使用两个后续周期是完全有效的。