Database - IBM DB2 LUW 10.5
Reproducing steps
1. Create DB2 SP with CLOB output parameter like this:
Code: Select all
CREATE OR REPLACE PROCEDURE NFTG.TEST_PROC (
IN ID INTEGER,
OUT DOCUMENT_NAME VARCHAR(510),
OUT DOCUMENT_DATE TIMESTAMP,
OUT DOCUMENT_TYPE INTEGER,
OUT DOCUMENT_DIRECTION INTEGER,
OUT DOC_TYPE_TEXT VARCHAR(128),
OUT DOC_DIRECTION_TEXT VARCHAR(128),
OUT COMMENT CLOB(2047M) )
SPECIFIC SQL151103102315059
LANGUAGE SQL
NOT DETERMINISTIC
EXTERNAL ACTION
MODIFIES SQL DATA
CALLED ON NULL INPUT
INHERIT SPECIAL REGISTERS
OLD SAVEPOINT LEVEL
begin
set (DOCUMENT_NAME, DOCUMENT_DATE, DOCUMENT_TYPE, DOCUMENT_DIRECTION,
DOC_TYPE_TEXT, DOC_DIRECTION_TEXT, COMMENT)=
('ЙЙЙЦЦЦУУУ','05.11.2015',1,1,'копия паспорта','входящий','');
end;
3. Implement button.OnClick handler like this:
Code: Select all
procedure TForm8.btn1Click(Sender: TObject);
var
s1 : string;
d3 : TDateTime;
i4 : integer;
i5 : integer;
s6 : string;
s7 : string;
begin
for p in sp.Params do //workaround of case, I wrote in topic
//http://forums.devart.com/viewtopic.php?f=28&t=32561
begin
param:=p as TUniParam;
if param.ParamType=ptOutput then
begin
param.ParamType:=ptInputOutput;
end;
end;
sp.ParamByName('id').AsInteger := 4;
sp.ExecProc();
sp.ExecProc(); // <-- access violation here
end;
I'm wondering, what should I do in this situation. May be there are some workarounds...