Problem: calling stored Procedure from Pro*C
Date: 1997/10/28
Message-ID: <3455c6a8.438981021_at_news.arcs.ac.at>#1/1
[Quoted] I should call a stored Procedure with a RECORD as IN OUT parameter from Pro*C. How must the RECORD declared in Pro*C?
I get allways the following error:
(1) PCC-S-02306, wrong number or types of arguments in call to 'INS'
Example:
-- PL/SQL --
cg$row AKTUELLE_MELDUNGEN%ROWTYPE;
TYPE cg$row_type IS RECORD
(MR_KENNUNG cg$row.MR_KENNUNG%TYPE
,ABSENDENUMMER cg$row.ABSENDENUMMER%TYPE
,ZEITSTEMPEL cg$row.ZEITSTEMPEL%TYPE
,MELDUNGS_ID cg$row.MELDUNGS_ID%TYPE);
TYPE cg$ind_type IS RECORD
(MR_KENNUNG BOOLEAN DEFAULT FALSE
,ABSENDENUMMER BOOLEAN DEFAULT FALSE
,ZEITSTEMPEL BOOLEAN DEFAULT FALSE
,MELDUNGS_ID BOOLEAN DEFAULT FALSE);
PROCEDURE ins(cg$rec IN OUT cg$row_type, cg$ind IN OUT cg$ind_type);
- Pro/C ---
EXEC SQL BEGIN DECLARE SECTION; typedef struct DbAktuelle_Meldungen {
char MR_KENNUNG[3]; int ABSENDENUMMER; char ZEITSTEMPEL[20]; VARCHAR MELDUNGS_ID[21];
} DbAktuelle_Meldungen, *pDbAktuelle_Meldungen;
typedef struct DbIndAktuelle_Meldungen {
short MR_KENNUNG_Ind; short ABSENDENUMMER_Ind; short ZEITSTEMPEL_Ind; short MELDUNGS_ID_Ind;
} DbIndAktuelle_Meldungen, *pDbIndAktuelle_Meldungen;
EXEC SQL END DECLARE SECTION;
void Ins_Aktuelle_Meldungen()
{
DbAktuelle_Meldungen dbData;
DbIndAktuelle_Meldungen Indicators;
EXEC SQL WHENEVER SQLERROR DO sql_error("Insert");
EXEC SQL EXECUTE
BEGIN
cg$AKTUELLE_MELDUNGEN.ins(:dbData, :Indicators);
END;
END-EXEC;
}
Thanks,
Johannes
-- Johannes Karanitsch email: Johannes.Karanitsch_at_fzmail.arcs.ac.at Dept. IT URL: http://zditf2.arcs.ac.at/jk Research Centre Seibersdorf phone: +43 2254 780-3173 A-2444 Seibersdorf / Austria fax: +43 2254 72133Received on Tue Oct 28 1997 - 00:00:00 CET