Oracle同义词错误

本文关键字:错误 同义词 Oracle | 更新日期: 2023-09-27 18:02:17

我知道对Oracle数据库编程,我得到这个错误:

ORA-06550: line 2, column 9: PL/SQL: ORA-01775: looping chain of synonyms 

这是在我的代码或在我的DB错误吗?代码是相同的,几乎整个数据访问层,我只得到这个错误,当我试图插入到一个特定的表。

BEGIN
UPDATE DEAL_NOTE 
SET NOTE_TXT=:prmNOTE_TXT 
WHERE DEAL_ID=:prmDEAL_ID;
IF SQL%NOTFOUND THEN
INSERT INTO DEAL_NOTE (NOTE_TXT, DEAL_ID) values (:prmNOTE_TXT, :prmDEAL_ID);
END IF;
END;

Oracle同义词错误

您的数据库有问题。

ORA-01775错误指示您有一个同义词A引用另一个同义词B,同义词B又引用同义词A,如

SQL> create synonym foo2 for foo1;
Synonym created.
SQL> create synonym foo1 for foo2;
Synonym created.
SQL> select * from foo2;
select * from foo2
              *
ERROR at line 1:
ORA-01775: looping chain of synonyms

纠正这个问题的唯一方法是修复数据库中的同义词,这样你就不会有这种循环依赖关系。您可以运行一个查询来识别这些同义词循环(假设您只有一个一级循环,其中a指向B, B指向a,而不是更复杂的循环),查询如下

SQL> ed
Wrote file afiedt.buf
  1  select a.synonym_name, b.synonym_name
  2    from all_synonyms a,
  3         all_synonyms b
  4   where a.owner = b.table_owner
  5     and a.synonym_name = b.table_name
  6     and b.owner = a.table_owner
  7*    and b.synonym_name = a.table_name
SQL> /
SYNONYM_NAME                   SYNONYM_NAME
------------------------------ ------------------------------
FOO2                           FOO1
FOO1                           FOO2

这可能是代码问题-可能与脚本的第2行有关。

要贴吗?

如何调试ORA-01775:同义词的循环链?

http://ora - 01775. -奥拉- code.com/表明:

ORA-01775:同义词循环链原因:通过一系列CREATE synonym语句,定义了一个引用自己的同义词。例如,以下定义是循环的:
CREATE SYNONYM s1 for s2 CREATE SYNONYM s2 for s3 CREATE SYNONYM s3 for s1

操作:更改一个同义词定义,使其应用于基表或视图,并重试操作。

这是DB中的一个问题—可能您正在触摸的表是间接引用自身的同义词