2009-05-04 17 views
0

Gespeicherte Prozedur, die mit einer Entwicklungsdatenbank ordnungsgemäß ausgeführt wird, aber in der Produktionsdatenbank nicht ausgeführt werden kann? Fehler zurückgegeben: "PLS-00306: falsche Anzahl oder Arten von Argumenten im Aufruf von <procedure naeme>"Fehler beim Ausführen der gespeicherten Prozedur in einer anderen Datenbank?

VC++ Datenbank Oracle

Geschlossen: Der Fehler durch falsches Synonym aufgetreten.

+0

Es wäre hilfreich, die Signatur der Prozedur zu haben, die ein Problem hat, zusammen mit dem Code, den Sie verwenden, um diese Prozedur aufzurufen. Ein kleines, einfaches Beispiel sollte ausreichen, um das Problem zu klären, ohne etwas Privates zu enthüllen. –

Antwort

0

Dieser Fehler hat nichts mit einem Problem in der ausgeführten Prozedur zu tun. Dieser Fehler hat damit zu tun, wie Sie ihn in einer Datenbank gegenüber einer anderen aufrufen. Es ist der Aufrufer in DEV, der die richtige Kombination von Parametern und Parametertypen sendet. Die Logik, die letztlich die Prozedur in PROD aufruft, sendet eine andere Kombination von Parametern.

Überprüfen Sie zunächst die Prozedurspezifikation in beiden Datenbanken, um sicherzustellen, dass sie WIRKLICH identisch ist. Suchen Sie nach Unterschieden in den Parametern, den Datentypen oder einem Unterschied in DEFAULT NULL oder ähnlichem.

Überprüfen Sie als nächstes die Logik, die die eigentliche Prozedur zwischen Datenbanken aufruft. In der Regel fehlt einer der Parameter oder der Datentyp ist falsch. Die Reihenfolge der Parameter ist auch wichtig, wenn Sie keine benannte Notation verwenden.

Wenn Sie schließlich sicher sind, dass alles gleich ist, dann ist es möglich, dass es Daten betrifft, die einen der Parameter haben, der fehlt, und Ihre C++ Treiber rufen nicht in das Verfahren gleich an.

Dies ist ein solider und klarer Fehler und es sagt Ihnen, dass es letztendlich einen Unterschied gibt, wie es aufgerufen wird. Viel Glück.

+0

der aufrufende Code und genannt sp bleibt gleich in der Datenbank – yesraaj

0

Sie sollten weitere Informationen bereitstellen. Zumindest, sind diese 'grundlegenden' Datentypen (NUMBER, DATE, VARCHAR2, etc) oder haben Sie exotische (XMLTYPE, geo, benutzerdefinierte Typen?) verwenden Sie SQL * Plus, verbinden Sie das Schema in beiden Datenbanken und tun a DESC Veröffentlichen Sie die Ergebnisse, damit wir sie sehen können.

Verwandte Themen