Ich habe jetzt mal eine Verbindung zwischen dem SQL-Server und der AS/400-DB2 hergestellt (Linked Server) und kann nun auch über den Weg SQL ausführen. Das klappt auch prima für SELECT, aber die Ausführung einer SQL-Prozedur ist leider immer noch nicht möglich.

Ich habe eine Prozedur ohne Parameter eingerichtet und kann diese problemlos mittels STRSQL aufrufen. Wenn ich sie per SQL verwenden will, erhalte ich die folgende Fehlermeldung:

Aufruf mit:

exec( 'call lib.sp_test2') at as400


OLE DB provider "DB2OLEDB" for linked server "as400" returned message "Routine TEST2 in LIB mit angegebenen Parametern nicht gefunden. SQLSTATE: 42884, SQLCODE: -440".
Msg 7215, Level 17, State 1, Line 1
Could not execute statement on remote server 'as400'.

---

Wenn ich meine Testprozedur mit einem Parameter benutze mit

exec ( 'call lib.test( ?)', '001') at as400 /* Parameter ist CHAR(3) */

oder

exec ( 'call lib.test( ?)', 1) at as400 /* Parameter ist INT */

dann kommt dieselbe Fehlermeldung. Also mache ich etwas grundsätzliches falsch. Nur sehe ich es nicht...

Habt Ihr einen Tipp für mich? Muss die SQL-Prozedur irgendwelchen Kriterien entsprechen? Ich habe die SQL-Prozedur direkt auf der AS/400-Maschine eingerichtet ( qsh -> cat SQL.txt | db2 -i ). Muss die Prozedur mittels Systembefehl irgendwie "registriert" werden oder ähnliches?

Und später möchte ich auch ein Result-Set zurückliefern, geht das in der Form überhaupt?