我不小心发现在Oracle SQL中可以发出以下语句:
select * from double,其中x = 1或1 = 1.
>双列中的列名为dummy而不是x.
>如果我从任何其他表中选择,它仍然有效,返回所有行.
> select * from double,其中y = 1或1 = 1也可以.
> select * from dual,其中z = 1或1 = 1不起作用,给出ORA-00904:z:无效的标识符.
> select * from double,其中x = 1不起作用,给出ORA-06553:PLS-306:调用’OGC_X’时参数的数量或类型错误.
x和y指的是什么?
最佳答案 这似乎是因为在某些Oracle数据库版本中存在名为X和Y的同义词:
select owner, synonym_name, table_owner, table_name from dba_synonyms where synonym_name in ('X', 'Y');
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME
------------------------------ ------------------------------ ------------------------------ ----------
PUBLIC X MDSYS OGC_X
PUBLIC Y MDSYS OGC_Y