回答:
これは、同じ名前で、入力パラメーターの数が異なる2つ以上のプロシージャがある場合に発生します。
たとえば、2つのプロシージャを作成しました。
CREATE PROCEDURE myProc(param1)
...
CREATE PROCEDURE myProc(param1, param2)
...
2番目のものを削除するには、2つのオプションがあります。
簡単なもの:
DROP PROCEDURE myProc(param1, param2);
難しいもの:
dbaccess DB -
select procname, procid, numargs from sysprocedures where procname like 'myProc';
procname myProc
procid 1
numargs 1
procname myProc
procid 2
**numargs 2**
UPDATE sysprocedures SET procname='myProcOLD' WHERE procid=2;
DROP PROCEDURE myProcOLD;
最初の方法が非常に単純であっても、この同じ問題のために真夜中に最初に呼び出されたときに、2番目の方法を選択しました。私の悪い...
これが将来問題になる可能性があることを認識している場合は、データベース内のすべてのプロシージャで一意でなければならないSPECIFIC名でプロシージャを作成できます。
プロシージャの作成時に問題になることに気付いていない場合は、正式に戻って特定の名前を追加することはできず、問題が発生します。
sysprocedures
選択した回答のUPDATEは、ユーザーがinformix
(またはプライベートサーバーの場合はサーバー所有者として)接続されている場合にのみ機能します。