| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.misc -> Stored procedure and Oracle
Help Please! I am new at Oracle, so you can be as elementary as you wish.
I am trying to use a PL/SQL stored procedure as the source of a Crystal
report, but I get an error
message indication that the stored procedure has no records. I am new at
Oracle and am modeling
the procedure after existing code. These are the steps I follow:
Everything works fine up to the point where I insert records into the
temporary table, CRYSTAL_AVGTIMEFILE_DATA.
The are successfully inserted into the table. The cursor variable is an IN
OUT parameter for the procedure.
When I try running it from the SQL*Plus command line I get an error
indication wrong number or type of parameters.
I do not know how to supply the IN portion of the parameter from the command
line since the type is REF cursor. The
existing Crystal reports have a corresponding referral parameter with a
default of 1, and instruct the user to ignore the parameter.
So I don't understand how the report is supplying the IN parameter to the
procedure, nor how it is receivinf the out
portion of that same parameter. my code follow:
This is the package definition:
CREATE package CRYSTAL_AVGTIMFILE_PKG as
type CmCur is REF CURSOR return CRYSTAL_AVGTIMFILE_DATA%ROWTYPE; END CRYSTAL_AVGTIMFILE_PKG; HERE IS THE error message:
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'MY_PROC'
ORA-06550: line 1, column 7:
HERE IS THE procedure definition:
/* This procedure returns the latest entry for each terminated civil case.
This is accomplished by creating and iterating through a cursor consisting
of civil cases from the REAL_CASE table. For each case_Id returned, the DSP
table is queried for the highest sequence number, or max(seq) to identify
the latest entry for that case. The case_id and sequence number identified
above is subsequenly used as the selection criteria to retrieve other
required fields from the REAL_CASE, ACTNCD, and DSP tables. To ensure that
only terminated cases are returned, this retrieval is performed with a
conditional statement that returns only rows where the termination date
(scr_term_dt) is not NULL.
*/
CREATE OR REPLACE PROCEDURE my_proc
(Referral in out CRYSTAL_AVGTIMFILE_PKG.CmCur)
AS
max_seq NUMBER (12);
today Date;
usrname VARCHAR2(20);
var_case_id CHAR(20);
var_case_cd CHAR(10);
var_dscr VARCHAR2(50);
var_actn_cd CHAR(20);
var_actncd_dscr VARCHAR2(100);
var_scr_cd dsp.scr_cd%TYPE;
var_dsp_dt date;
var_scr_dt date;
var_scr_term_dt date;
var_stat_dt date;
var_file_dt date;
var_dsp_cd CHAR(10);
var_scr_term_cd char(10);
BEGIN
SELECT user, sysdate
INTO usrname, today
FROM dual;
REFRESH := 'YES'; If refresh = 'YES' then
delete from CRYSTAL_AVGTIMFILE_DATA where user = usrname; End IF;
for c1rec in (SELECT case_id, dscr, actn_cd, case_cd from real_case
WHERE case_cd in ('CV')
AND case_id BETWEEN '6030' AND '6040'
and case_cd is not NULL)
SELECT max(seq)
INTO max_seq
FROM DSP
WHERE case_id = c1rec.case_id
ORDER BY case_id;
SELECT
scr_dt, scr_cd, scr_term_dt, stat_dt, dsp_dt, dsp_cd, scr_term_cd,
term_cd, stat_cd
INTO var_scr_dt, var_scr_cd, var_scr_term_dt, var_stat_dt, var_dsp_dt,
var_dsp_cd,
var_scr_term_cd, var_term_cd, var_stat_cd
FROM dsp
WHERE case_id = c1rec.case_id
AND SEQ = max_seq;
IF var_scr_term_dt is not null then
var_dscr := c1rec.dscr;
var_case_id := c1rec.case_id;
var_case_cd := c1rec.case_cd;
var_actn_cd := c1rec.actn_cd;
SELECT file_dt
INTO var_file_dt
FROM REAL_CASE
WHERE case_id = c1rec.case_id;
SELECT dscr
INTO var_actncd_dscr
FROM actncd
WHERE actn_cd = var_actn_cd;
INSERT INTO CRYSTAL_AVGTIMFILE_DATA values
(usrname, var_case_id, max_seq, var_case_cd, var_dscr, var_scr_dt,
var_file_dt, var_scr_cd, var_scr_term_dt, var_stat_dt, var_dsp_dt,
var_actn_cd, var_actncd_dscr, var_dsp_cd,
var_scr_term_cd, var_term_cd, var_stat_cd);
End if;
END;
END LOOP;
open Referral for select * from CRYSTAL_AVGTIMFILE_DATA where user =
usrname;
END my_proc;
/
Received on Sun Jan 12 2003 - 14:30:03 CST
![]() |
![]() |