Announcement

Collapse
No announcement yet.

Problem mit Proc Aufruf

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit Proc Aufruf

    Hallo, ich habe 2 STored Procedure in IB6.0.
    <PRE>Mit Execute Procedure Update_Tabelle_Mitarbeiter(:Name, :Vorname,:Telefon)returning_Value :beendet;</Pre>
    rufe ich die eine Prozedur aus der anderen auf.
    Bisher hatte ich auch keine Fehlermeldung. Jetzt habe ich aber in der Aufrufenden Prozedur etwas geändert (hat aber nichts mit Aufruf der anderen zu tun) und bekomme folgende Fehlermeldung:
    <B>Unsuccessful metadata update
    ERASE RDB$PROCEDURE_PARAMETERS failed
    invalid request BLR at Offset 7723
    parameter mismatch for procedure UPDATE_TABELLE_MITARBEITER</B>.

    Kann mir jemand sagen, was ich falsch mache.

    Michaela

  • #2
    Micha,<br>
    sieht so aus, als ob Du Deine Prozedur um einen (oder mehrere) Rückgabeparameter erweitert hast. Dies führt zu dem Problem, dass dies jetzt in der anderen Prozedur nicht mehr übereinstimmt, da dort lediglich EIN Rückgabeparameter (returning_values) definiert ist.<p>
    Lösung:<br>
    Bevor man eine (Executable) Prozedur um Rückgabeparameter erweitert, sollte man sich die Abhängigkeiten vorher genau ansehen und so es da Probleme gibt diese Prozeduren zuerst ändern (entweder den Aufruf auskommentieren oder die ganze Prozedur auf eine leere Proc umstellen oder sie gleich ganz löschen).<br>
    Nach dem UPDATE der anderen Prozedur, dann die aufrufenden Prozeduren dementsprechend ändern / wiederherstellen / neu erstellen.<p>
    Tip: <br>
    Wenn Du eine Prozedur anstatt executable zu einer suspendable Prozedur änderst, tritt das Problem nicht auf, da eine suspendable Procedure nicht ALLE Rückgabeparameter verarbeiten muss, eine executable hingegen schon<p>
    Beispiel:<br>
    CREATE PROCEDURE SP_GET_STH <br>
    RETURNS<br>
    (FELD1 INTEGER,<br>
    FELD2 INTEGER)<br>
    AS <br>
    BEGIN<br>
    FELD1 = 'HALLO';<br>
    FELD2 = 'WELT';<br>
    SUSPEND;<br>
    END<br>
    <p>
    Diese Prozedur kannst Du nun aus anderen Prozeduren mit:<br>
    SELECT FELD1, FELD2 FROM SP_GET_STH<br>
    aufrufen.<br>
    Erweiterst Du SP_GET_STH um den Rückgabeparameter FELD3 ist das der aufrufenden Prozedur egal, sie will eh nur FELD1 und FELD2.<p>
    Luc

    Comment


    • #3
      Hallo Luc,

      Danke erstmal für deine Mühe.
      Was die wirkliche Ursache des Fehlers war,w eiß ich zwar immer noch nicht, aber nachdem ich die Prozedur Update_Tabelle_Mitarbeiter gelöscht, dann die andere Prozedur kompiliert und dann die erste wieder eingefügt habe, gings.
      Komischerweise hat eine einfache Auskommentierung des Prozeduraufrufs nicht geholfen, dass hatte ich auch schon probiert, bevor ich hier gepostet hatte.

      Naja, hauptsache es geht.

      Michael

      Comment

      Working...
      X