7 Stimmen

Wie kann ich eine DB2 Stored Procedure mit OUT-Parametern aus SQuirreL SQL aufrufen?

Ich mag SQuirreL SQL wirklich als SQL-Abfragetool, aber ich konnte es nie dazu bringen, gespeicherte Prozeduren in unserer AS/400 DB2-Datenbank aufzurufen. Ich erhalte immer die Fehlermeldung "Die Anzahl der gesetzten oder registrierten Parameterwerte stimmt nicht mit der Anzahl der Parameter überein." Ich habe die Anzahl der Parameter doppelt geprüft und hatte kein Glück. Dies ist die Syntax, die ich für eine Prozedur ausprobiert habe, die ein IN und ein OUT benötigt:

SOMESPROC(12345, ?) aufrufen;

7voto

farbgeist Punkte 101

Es scheint, dass SQuirrel derzeit nicht in der Lage ist, dies auf AS/400 DB2 zu tun.

Mit der quelloffenen "SQL Workbench/J" ( http://www.sql-workbench.net/ ) Ich konnte eine Prozedur aufrufen:

wbcall SOMESPROC(12345, ?);

Es hat seinen eigenen Befehl für den Aufruf einer Prozedur "wbcall". Verwenden Sie ? für Out-Parameter.

Hinweis: Achten Sie bei der Installation von SQL Workbench/J darauf, dass Sie den richtigen DB2-Treiber von IBM und fügen Sie beim Hinzufügen des Treibers in SQL Workbench/J auch die Lizenzdatei hinzu.

3voto

Chrias Punkte 39

In Squirrel können Sie etwas wie dieses verwenden. Sie müssen sicherstellen, dass der Typ der deklarierten Variablen mit dem Typ des Out-Parameters in der gespeicherten Prozedur übereinstimmt.

BEGIN
    DECLARE outParam INT;
    STORED_PROC_NAME(outParam);
END

Wenn Sie auch einen Beitrag zum Verfahren leisten müssen, können Sie dies tun.

BEGIN
    DECLARE outParam INT;
    STORED_PROC_NAME('input', outParam);
END

Sie müssen auch das Trennzeichen für die Anweisung in etwas anderes ändern als ; . Andernfalls wird es die Erklärung auflösen und versuchen, jeden Teil einzeln zu senden.

2voto

indybee Punkte 1356

In der Pro-Version von DbVisualizer, mit der "Process Parameter Markers in SQL" unter der SQL Commander-Menüoption aktiviert, wird es erlauben, die "?

call SOMESPROC(12345, ?);

1voto

Lefty Frizzell Punkte 1

Durch Versuch und Irrtum konnte ich die Ergebnisse in Squirrel sehen.

create or replace variable var4 char(1);
create or replace variable var5 decimal(3,0);
create or replace variable var6 char(60);
call getthedata('XXX',123456789,'1234567',var4,var5,var6);
select var4,var5,var6 from sysibm.sysdummy1;  -- displays OUT parms

0voto

Leslie Punkte 3494

Ich denke, wenn einer dabei ist, sollte der Anruf lauten:

CALL SomeSProc(12345)

um ein Ergebnis zu erhalten, versuchen Sie es vielleicht:

SELECT * FROM SomeSProc(12345)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X