pl / sql美元运算符?

时间:2020-03-06 14:54:05  来源:igfitidea点击:

我今天早上在pl / sql脚本中遇到了以下ddl:

创建索引genuser.idx $$ _ 0bdd0011
...

我最初的想法是索引名称是由工具生成的...但是我也不是pl / sql的超级巨星,所以我很可能是不正确的。双美元符号在此声明中是否有任何特殊意义?

解决方案

没有特殊意义或者意义。

SQL> create table t (col number)
  2  /

Table created.

SQL> create index idx$$_0bdd0011 on t(col)
  2  /

Index created.

注意:CREATE INDEX是DDL语句,通常在SQL脚本而不是PL / SQL中执行。

我们最初的想法似乎是正确的。这看起来像是由工具生成的索引名(但未由Oracle分配,因为未指定索引名)。美元符号除了是人类开发人员很少使用的有效符号之外,没有其他特殊含义,因此可以方便地降低系统生成的名称与人类生成的名称发生冲突的风险。

无论他的名字来自何处,都与甲骨文记录的建议相反:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#SQLRF00223

Oracle strongly discourages you from using $ and # in nonquoted identifiers