双成员运算符是做什么的?

What does a double membership operator do?

我以前没有使用 SQL*Plus 的经验,在 Google 上找不到这个问题的答案。

我想知道“..”运算符在 SQL*Plus 中的作用。我在任何类型的文档或网上都找不到任何简单的说明。

PROMPT CREATE TABLE &&OWNER..POINT

这是我看到它被使用的地方的一个例子。抱歉,如果您需要更多上下文,但我无法显示整个脚本,因为它可能是敏感信息。

From the docs:

If you wish to append characters immediately after a substitution variable, use a period to separate the variable from the character.

您有替换变量 OWNER,并且您正在尝试生成 SCHEMA.TABLE 模式。作为示例,我将定义该变量,并从 dual:

中获取替换值
define OWNER=MYSCHEMA

select '&&OWNER.POINT' from dual;

old:select '&&OWNER.POINT' from dual
new:select 'MYSCHEMAPOINT' from dual

'MYSCHEMAPOIN
-------------
MYSCHEMAPOINT

&&OWNER.POINT中的句点被解释为变量名的分隔符和结束符,只有POINT部分被视为'append characters',所以最终结果没有根本没有月经 - 这不是您想要的。

由于正在消耗单个周期,因此您需要考虑到这一点,然后添加保留的第二个实际周期 - 以便它仍被视为 'append characters' 的一部分:

select '&&OWNER..POINT' from dual;

old:select '&&OWNER..POINT' from dual
new:select 'MYSCHEMA.POINT' from dual

'MYSCHEMA.POIN
--------------
MYSCHEMA.POINT

看起来好多了。

所以 .. 不是运算符。第一个 . 是替换变量语法的一部分 - 并且经常被省略 - 而第二个 . 是你正在形成的最终值的一部分。替换后只是 schema object naming 的正常部分,根本不特定于 SQL*Plus。