Es scheint tatsächlich zu gehen, wenn man in der stored Procedure die Parameter als clob deklariert und im RPG-Programm einen varchar-Parameter mit passender Länge deklariert.

Ich habe etwas getestet und keine Probleme festgestellt.

Hier mein funktionierendes Beispiel:

-- Stored Procedure:
Code:
create or replace procedure scr/prcA (
   in text1 clob(1M),
   out text2 clob(1M) )
   Language RPGLE
   Not Deterministic
   modifies sql data
   called on null input
   Parameter Style general
   external name 'SCR/A';
-- SQL Funktion:
Code:
create or replace function scr/fktA(
text1 clob(1M)
)
returns clob(1M)

language sql
modifies sql data
not deterministic
begin
 declare text2 clob(1M);
 set text2 = '';
 CALL scr.prcA(text1, text2);
 return text2;
end;

//RPG:
Code:
**free

//==================================================================================
//Main:
//==================================================================================
dcl-pi *n;
   clob1 varchar(1000000) const;
   clob2 varchar(1000000);
end-pi;

clob2 = 'hallo ' + clob1 + ' ende';

*inlr = *on;
return;

Beispielaufruf:
select scr.fktA('Test') from sysdummy1;

=> Ergebnis: hallo Test ende