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;
您的数据库有问题。
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中的一个问题—可能您正在触摸的表是间接引用自身的同义词