Problem: calling stored Procedure from Pro*C

From: Johannes Karanitsch <Johannes.Karanitsch_at_gmx.net>
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 72133
Received on Tue Oct 28 1997 - 00:00:00 CET

Original text of this message