Hallo zusammen,
ich habe mich ein wenig mit ChatGpt unterhalten und ChatGpt behauptet, dass ich eine SQL UDF schreiben kann, die ein RPGLE-Serviceprogramm benutzt, das In/Out Parameter hat. Es hat beim Codieren bisher nicht geklappt. Aber mal die Frage: Kann das gehen?
Konkret: Mein Serviceprogramm hat folgende Parameterschnittstelle:
Code:
dcl-proc DAX99##_checkAuthorization export;
dcl-pi *n varchar(10000);
i#token varchar(10000) const;
i#_clientId varchar(50) const;
i#_role varchar(100) const;
i#pgmName char(10) const;
i#procName varchar(60) const;
i#dl_rec packed(15) const;
r#httpStatusCode int(10);
r#username varchar(100) options(*nopass);
end-pi;
Der letzte Parameter ist optional, den will ich in der UDF gar nicht ansprechen. Aber der vorletzte Parameter "r#httpStatusCode" ist nicht als const definiert. Kann ich das Serviceprogramm trotzdem in der UDF benutzen?
Hier die UDF:
Code:
create or replace function edpgmlib/DAX99##_checkAuthorizationUdf (
i#_token varchar(10000),
i#_clientId varchar(50),
i#_role varchar(100),
i#_pgmName char(10),
i#_procName varchar(60),
i#_dl_rec dec(15),
inout i#_httpStatusCode integer )
returns nvarchar(10000)
specific edpgmlib/DAX99##_checkAuthorizationUdf
language rpgle
not deterministic
modifies sql data
called on null input
disallow parallel
EXTERNAL NAME 'EDPGMLIB/DAX99##01(DAX99##_CHECKAUTHORIZATION)'
parameter style general;
Das SQL lässt sich nicht ausführen, solange ich das Schlüsselwort inout vor dem Parameter " i#_httpStatusCode" stehen habe. Wenn ich inout wegnehme, lässt es sich ausführen. Aber wohin würde das RPG-Programm denn seinen geänderten Parameter hinschreiben, wenn ich ein Literal übergebe?
LG,
Dieter
Bookmarks