我正在尝试在一个简单的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
确实使它像我想要的那样工作,但是必须放两个句点对我来说没有意义。谁能告诉我我做错了什么?
答案 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以相同的方式工作 - 您的第一个句点被解释为替换变量终止符。因此,在这种情况下使用两个后续周期是完全有效的。