PPC*_*PCC 1 sql database oracle
我是 Oracle SQL 的新手。我遇到了以下声明:
CREATE TABLE &&DATABASE_ONE..TABLE_ONE(...);
Run Code Online (Sandbox Code Playgroud)
上面的语句试图创建一个表。我不确定我是否对..和有正确的理解&&。
我已经做了一些谷歌搜索,我发现这个链接说 double dot(..) 将选择default schema查询。
DATABASE_ONE应该是模式名,TABLE_ONE应该是表名。
我&&对在数据库名称前使用感到困惑。谷歌搜索后,我发现一些帖子说这&&意味着"Oracle will prompt the user for a value and will create a permanent variable".
有人可以解释一下&&上面的语句是如何工作的吗?如果我有任何误解,请纠正我。
@Gary_W 已经介绍了单和双 & 号之间的区别。
双周期可能不太明显。来自SQL*Plus 文档:
如果您希望在替换变量后立即附加字符,请使用句点将变量与字符分开。
如果你有一个时期:
&&DATABASE_ONE.TABLE_ONE
Run Code Online (Sandbox Code Playgroud)
那么该句点将被视为替代变量名称的终止符,并在该过程中被消耗。假设您输入的值是“HR”;替换将是:
old:select &&DATABASE_ONE.TABLE_ONE from dual
new:select HRTABLE_ONE from dual
select HRTABLE_ONE from dual
Run Code Online (Sandbox Code Playgroud)
如您所见,现在模式和表名之间没有句点,为您提供了一个不代表您想要的组合标识符。
使用表格,您有:
&&DATABASE_ONE..TABLE_ONE
Run Code Online (Sandbox Code Playgroud)
第二个时期是位于这两个元素之间的“正常”时期;一旦第一个被替换消耗掉,第二个仍然履行该功能:
old:select &&DATABASE_ONE..TABLE_ONE from dual
new:select HR.TABLE_ONE from dual
select HR.TABLE_ONE from dual
Run Code Online (Sandbox Code Playgroud)