1

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

这是我的 sql 脚本的片段:

DEF SCHEMA_NAME = MY_SCHEMA;

CREATE TABLE &SCHEMA_NAME.BOOK
(
    BOOK_ID            INTEGER
);

那是用表名创建一个表,而不是在 schemaMY_SCHEMABOOK中命名的表。BOOKMY_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确实可以使其按我的意愿工作,但是必须放置两个句点对我来说没有意义。谁能告诉我我做错了什么?

4

1 回答 1

1

设置CON [猫] {。| c | 开 | 离开}

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

当您打开 CONCAT 时,SQL*Plus 会将 CONCAT 的值重置为一个句点。

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

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

于 2013-07-03T05:11:32.113 回答