Calling procedure over dblink - PLS-00306: wrong number or types of args
Getting the above error when calling a procedure residing in a package on another database over a link.
The arguments are an object and, a table of objects. The variables being passed are based on objects declared locally that look exactly like the ones the procedure is expecting.
I haven't done this before so - I'm not sure what the issue is. The execute privilege has been granted on the dependent objects remotely as well as locally. I don't know what else to try and, I have not had any luck looking for a similiar issue online. Please help.
Thanks but - before doing that I just wanted to see if someone can review this and see if this is my problem:
http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96594/adobjbas.htm#466038
We are using objects declared on the remote database. And, my variables I'm passing are of reference to exact copies on the host. But, from what I understand from the link above - you can't use object types across links. I'm completely lost as to whether this is the issue or not. It seems like a fairly obscure topic as far as documentation goes. If this is the issue however - what is the way around it? We are loading a table of objects with 40,000 plus rows of data to pass to a procedure remotely. If we can't pass the object type - how do we get the rows to the procedure (and, we aren't against modifying the remote procedure - just need to know the best method).
Thanks in advance for your time - help.
Similar Messages
-
Hi,
My Problem is when im adding dataset with stored procedure, im getting this error.
I Can access database,
Could not create a list of fields for the query. Verify that you can connect to the data source and that your query syntax is correct.
ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'PROCEDURE_NAME' ORA-06550: line 1, column 7: PL/SQL:
Statement ignored
stored procedure is simple select :
CREATE OR REPLACE PROCEDURE [PROCEDURE_NAME](L_CURSOR out SYS_REFCURSOR)
is
Begin
open L_CURSOR for
SELECT [columnname] FROM
[tablename]
End;
Configuration Details:
DB: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64biOracle Developer Tools for Visual Studio Copyright (c) 2005,2014 SQL Server Data Tools Type: Oracle , Data Provider : .Net Framework Data Provider For OracleThe answer is of inside question. It is about provider. Change my provider ODTwithODAC for 10g (my database version). And problem resolved.
Thank you for your helps,
Regards,
Arda -
PLS-00306 wrong number or types of arguments in call to 'procedure'
now i am using oracle10g xe , i get the following error
create or replace procedure proc_name(slno_in in number,
name_out out varchar2,fee_out out number)
is
v_name student.name%type;
v_fee student.fee%type;
begin
select name,fee into v_name,v_fee from
student where slno=slno_in;
name_out := v_name;
fee_out := v_fee;
end proc_ref;
Procedure created.
SQL> exec proc_name(1);
BEGIN proc_ref(1); END;
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'PROC_REF'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
please help meYou have a procedure with three arguments
>
create or replace procedure proc_name(slno_in in number,
name_out out varchar2,fee_out out number)You then call it by providing one argument
>
SQL> exec proc_name(1);
BEGIN proc_ref(1); END;
You get an error saying wrong number of arguments.
PLS-00306: wrong number or types of arguments in call to 'PROC_REF'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
I don't see how it can be any clearer, call the procedure with three arguments.
var string varchar2(100)
var num number
exec proc_ref(1, :string, :num) -
Pl. help debug - PLS-00306: wrong number or types of arguments in call
Hi,
I am trying to create a wrapper function to all a procedure in Oracle EBusiness Suite 11i.
When I compile the following code
==========
CREATE OR REPLACE PROCEDURE gme.KIL_ProcessAlloc IS
vFileName VARCHAR2(30) := '1006251.csv';
vLoc VARCHAR2(20) := '/u041/applmgr/opm/opmappl/utllog';
v_InHandle utl_file.file_type;
vNewLine VARCHAR2(1000);
vLineNo PLS_INTEGER;
c1 PLS_INTEGER;
c2 PLS_INTEGER;
c3 PLS_INTEGER;
c4 PLS_INTEGER;
c5 PLS_INTEGER;
c6 PLS_INTEGER;
c7 PLS_INTEGER;
c8 PLS_INTEGER;
c9 PLS_INTEGER;
c10 PLS_INTEGER;
c11 PLS_INTEGER;
c12 PLS_INTEGER;
c13 PLS_INTEGER;
c14 PLS_INTEGER;
c15 PLS_INTEGER;
c16 PLS_INTEGER;
c17 PLS_INTEGER;
c18 PLS_INTEGER;
c19 PLS_INTEGER;
c20 PLS_INTEGER;
c21 PLS_INTEGER;
c22 PLS_INTEGER;
c23 PLS_INTEGER;
c24 PLS_INTEGER;
c25 PLS_INTEGER;
c26 PLS_INTEGER;
c27 PLS_INTEGER;
c28 PLS_INTEGER;
c29 PLS_INTEGER;
c30 PLS_INTEGER;
c31 PLS_INTEGER;
c32 PLS_INTEGER;
c33 PLS_INTEGER;
c34 PLS_INTEGER;
TYPE AllocArray IS TABLE OF GME_INVENTORY_TXNS_GTMP%ROWTYPE
INDEX BY BINARY_INTEGER;
l_Allocdata AllocArray;
TYPE MtlDetailArray IS TABLE OF gme_material_details%ROWTYPE
INDEX BY BINARY_INTEGER;
l_MtlDetaildata MtlDetailArray;
TYPE xTranArray IS TABLE OF GME_INVENTORY_TXNS_GTMP%ROWTYPE
INDEX BY BINARY_INTEGER;
l_xtrandata xTranArray;
TYPE defTranArray IS TABLE OF GME_INVENTORY_TXNS_GTMP%ROWTYPE
INDEX BY BINARY_INTEGER;
l_deftrandata defTranArray;
t_messagecount number;
t_messagelist varchar2(10000);
t_returnstatus varchar2(1);
BEGIN
v_InHandle := utl_file.fopen(vLoc, vFileName, 'r');
vLineNo := 1;
LOOP
BEGIN
utl_file.get_line(v_InHandle, vNewLine);
EXCEPTION
WHEN NO_DATA_FOUND THEN
EXIT;
END;
vNewLine := TRANSLATE(vNewLine, 'A''', 'A');
c1 := INSTR(vNewLine, ',', 1,1);
c2 := INSTR(vNewLine, ',', 1,2);
c3 := INSTR(vNewLine, ',', 1,3);
c4 := INSTR(vNewLine, ',', 1,4);
c5 := INSTR(vNewLine, ',', 1,5);
c6 := INSTR(vNewLine, ',', 1,6);
c7 := INSTR(vNewLine, ',', 1,7);
c8 := INSTR(vNewLine, ',', 1,8);
c9 := INSTR(vNewLine, ',', 1,9);
c10 := INSTR(vNewLine, ',', 1,10);
c11 := INSTR(vNewLine, ',', 1,11);
c12 := INSTR(vNewLine, ',', 1,12);
c13 := INSTR(vNewLine, ',', 1,13);
c14 := INSTR(vNewLine, ',', 1,14);
c15 := INSTR(vNewLine, ',', 1,15);
c16 := INSTR(vNewLine, ',', 1,16);
c17 := INSTR(vNewLine, ',', 1,17);
c18 := INSTR(vNewLine, ',', 1,18);
c19 := INSTR(vNewLine, ',', 1,19);
c20 := INSTR(vNewLine, ',', 1,20);
c21 := INSTR(vNewLine, ',', 1,21);
c22 := INSTR(vNewLine, ',', 1,22);
c23 := INSTR(vNewLine, ',', 1,23);
c24 := INSTR(vNewLine, ',', 1,24);
c25 := INSTR(vNewLine, ',', 1,25);
c26 := INSTR(vNewLine, ',', 1,26);
c27 := INSTR(vNewLine, ',', 1,27);
c28 := INSTR(vNewLine, ',', 1,28);
c29 := INSTR(vNewLine, ',', 1,29);
c30 := INSTR(vNewLine, ',', 1,30);
c31 := INSTR(vNewLine, ',', 1,31);
c32 := INSTR(vNewLine, ',', 1,32);
c33 := INSTR(vNewLine, ',', 1,33);
c34 := INSTR(vNewLine, ',', 1,34);
-- l_allocdata(vLineNo).sourceno := SUBSTR(vNewLine,1,c1-1);
-- l_allocdata(vLineNo).sizeno := SUBSTR(vNewLine,c1+1,c2-c1-1);
-- l_allocdata(vLineNo).status := SUBSTR(vNewLine,c2+1,c3-c2-1);
-- l_allocdata(vLineNo).latitude := SUBSTR(vNewLine,c3+1,c4-c3-1);
-- l_allocdata(vLineNo).longitude := SUBSTR(vNewLine,c4+1,c5-c4-1);
-- l_allocdata(vLineNo).testfor := SUBSTR(vNewLine,c5+1);
l_allocdata(vLineNo).trans_id := SUBSTR(vNewLine,1,c1-1);
l_allocdata(vLineNo).item_id := SUBSTR(vNewLine,c1+1,c2-c1-1);
l_allocdata(vLineNo).co_code := SUBSTR(vNewLine,c2+1,c3-c2-1);
l_allocdata(vLineNo).orgn_code := SUBSTR(vNewLine,c3+1,c4-c3-1);
l_allocdata(vLineNo).whse_code := SUBSTR(vNewLine,c4+1,c5-c4-1);
l_allocdata(vLineNo).lot_id := SUBSTR(vNewLine,c5+1,c6-c5-1);
l_allocdata(vLineNo).location := SUBSTR(vNewLine,c6+1,c7-c6-1);
l_allocdata(vLineNo).doc_id := SUBSTR(vNewLine,c7+1,c8-c7-1);
l_allocdata(vLineNo).doc_type := SUBSTR(vNewLine,c8+1,c9-c8-1);
l_allocdata(vLineNo).doc_line := SUBSTR(vNewLine,c9+1,c10-c9-1);
l_allocdata(vLineNo).line_type := SUBSTR(vNewLine,c10+1,c11-c10-1);
l_allocdata(vLineNo).reason_code := SUBSTR(vNewLine,c11+1,c12-c11-1);
l_allocdata(vLineNo).trans_date := SUBSTR(vNewLine,c12+1,c13-c12-1);
l_allocdata(vLineNo).trans_qty := SUBSTR(vNewLine,c13+1,c14-c13-1);
l_allocdata(vLineNo).trans_qty2 := SUBSTR(vNewLine,c14+1,c15-c14-1);
l_allocdata(vLineNo).qc_grade := SUBSTR(vNewLine,c15+1,c16-c15-1);
l_allocdata(vLineNo).lot_status := SUBSTR(vNewLine,c16+1,c17-c16-1);
l_allocdata(vLineNo).trans_stat := SUBSTR(vNewLine,c17+1,c18-c17-1);
l_allocdata(vLineNo).trans_um := SUBSTR(vNewLine,c18+1,c19-c18-1);
l_allocdata(vLineNo).trans_um2 := SUBSTR(vNewLine,c19+1,c20-c19-1);
l_allocdata(vLineNo).completed_ind := SUBSTR(vNewLine,c20+1,c21-c20-1);
l_allocdata(vLineNo).staged_ind := SUBSTR(vNewLine,c21+1,c22-c21-1);
l_allocdata(vLineNo).gl_posted_ind := SUBSTR(vNewLine,c22+1,c23-c22-1);
l_allocdata(vLineNo).event_id := SUBSTR(vNewLine,c23+1,c24-c23-1);
l_allocdata(vLineNo).text_code := SUBSTR(vNewLine,c24+1,c25-c24-1);
l_allocdata(vLineNo).transaction_no := SUBSTR(vNewLine,c25+1,c26-c25-1);
l_allocdata(vLineNo).action_code := SUBSTR(vNewLine,c26+1,c27-c26-1);
l_allocdata(vLineNo).material_detail_id := SUBSTR(vNewLine,c27+1,c28-c27-1);
l_allocdata(vLineNo).organization_id := SUBSTR(vNewLine,c28+1,c29-c28-1);
l_allocdata(vLineNo).locator_id := SUBSTR(vNewLine,c29+1,c30-c29-1);
l_allocdata(vLineNo).subinventory := SUBSTR(vNewLine,c30+1,c31-c30-1);
l_allocdata(vLineNo).alloc_um := SUBSTR(vNewLine,c31+1,c32-c31-1);
l_allocdata(vLineNo).alloc_qty := SUBSTR(vNewLine,c32+1,c33-c32-1);
l_allocdata(vLineNo).def_trans_ind := SUBSTR(vNewLine,c33+1,c34-c33-1);
vLineNo := vLineNo+1;
END LOOP;
utl_file.fclose(v_InHandle);
FOR i IN 1..vLineNo-1 loop
GME_API_PUB.insert_line_allocation (
1,
100,
FALSE,
True,
l_allocdata(i),
null,
null,
false,
false,
false,
l_MtlDetailData,
l_xtrandata,
l_deftrandata,
t_messagecount,
t_messagelist,
t_returnstatus);
end loop;
IF (t_returnstatus <> 'S') THEN
for i IN 1 .. t_messagecount LOOP
dbms_output.put_line('The text is '||FND_MSG_PUB.get(i,t_messagelist));
END LOOP;
END IF;
-- COMMIT;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END KIL_ProcessAlloc;
===============
I get this
Warning: Procedure created with compilation errors.
SQL> sho err
Errors for PROCEDURE GME.KIL_PROCESSALLOC:
LINE/COL ERROR
145/8 PLS-00306: wrong number or types of arguments in call to
'INSERT_LINE_ALLOCATION'
145/8 PL/SQL: Statement ignored
=================
The package specs of GME_API_PU is under:
===============
PROCEDURE insert_line_allocation (
p_api_version IN NUMBER := gme_api_pub.api_version
,p_validation_level IN NUMBER := gme_api_pub.max_errors
,p_init_msg_list IN BOOLEAN := FALSE
,p_commit IN BOOLEAN := FALSE
,p_tran_row IN gme_inventory_txns_gtmp%ROWTYPE
,p_lot_no IN VARCHAR2 DEFAULT NULL
,p_sublot_no IN VARCHAR2 DEFAULT NULL
,p_create_lot IN BOOLEAN DEFAULT FALSE
,p_ignore_shortage IN BOOLEAN DEFAULT FALSE
,p_scale_phantom IN BOOLEAN DEFAULT FALSE
,x_material_detail OUT gme_material_details%ROWTYPE
,x_tran_row OUT gme_inventory_txns_gtmp%ROWTYPE
,x_def_tran_row OUT gme_inventory_txns_gtmp%ROWTYPE
,x_message_count OUT NUMBER
,x_message_list OUT VARCHAR2
,x_return_status OUT VARCHAR2);
GME_API_PUB.insert_line_allocation
===========
What am I doing wrong...why am I getting PLS-00306.
Can someone help?
Thank you
Sundar
[email protected]Hi John,
Thanks a ton - a nice Christmas gift. Thank you for being a Santa :-).
I used the same subscript as the one used for in parameter and the procedure compiled without errors.
A corollary: If (any of the) Out parameter is null (all columns of the row/array), will the array row element still be stored ? May be I cross the bridge when I come to it.
Merry Christmas.
Sundar -
PLS-00306: wrong number or types of arguments in call in a for loop
Dear all
I recently put up another post about the same error message but as the message now relates to another part of my programme and, in my mind at least, a different conceptual idea, I thought I should start a new top. If that is not right thing to have done then please let me know. I am working in 10.2.
I am trying to pass through multiple variables. When I run the code at the end of this question I get an error message:
PLS-00306: wrong number or types of arguments in call to 'CUR_MAP_LIST'This relates to the line:
FOR var_map_list IN cur_map_list (par_map_list (n))I think the reason the error message comes up is because par_map_list is a associate array / PL/SQL table and cur_map_list is based on %rowtype. Although I could be wrong. However I am not sure what I should be doing so that I don't get such an error message.
I was reading through page 623 on Web Development 9i (by Brown; pub. McGrew-Hill) and pages 357-358 of Oracle Web Application Programming for PL/SQL Developers (by Boardman, Caffrey, Morse, Rosenzweig; pub. Prentice Hall), in order to try and write my code. As well as Oracle's Application Developer’s Guide - Fundamentals (Release 2), page 11-6. In particular the Web Development book uses the following:
create or replace procedure query_department
(in_dept_no owa_util.ident_arr)
is
cursor dept_cursor (nbt_dept_no emp.deptno%TYPE) is
select empno, ename, mgr, sal, comm
from scott.emp
where deptno = nbt_dept_no;
begin
for x in 1 .. in_dept_no.count loop
for dept_rec in dept_cursor(in_dept_no (x)) loop
end loop;
end loop;
end;In that example the cursor selects empno, ename, mgr, sal and comm from emp. So if it is doing that the cursor must be of a VARCHAR2 and NUMBER data type. What I don't understand is the for dept_rec in part. For a start I am not sure where dept_rec comes from? If it is a NUMBER data type, how can the in_dept_no, which is a owa_util.ident_arr associate array / PL/SQL data type work with it. Unfortunately because the example is incomplete and doesn't include procedures relating to the in variables, I am unable to run it and try and learn from what it is doing, so that I can try and relate the concept to my own work.
My programme is as follows. There may be other errors in the code not relating to this error. If so I hope to find these and resolve them once I understand what I should be doing here:
--Global variables--
gvar_mapviewer_host VARCHAR2(56) := 'http://tiger.iso.port.ac.uk:7785/mapviewer/omserver';
gvar_proc_host VARCHAR2(56) := 'http://tiger.iso.port.ac.uk:7785/www/geg50160';
gvar_xml_request VARCHAR2(100) :='?xml_request=<?xml version="1.0" standalone="yes"?>';
--Main calling programming--
PROCEDURE MAPS AS
empty owa_util.ident_arr;
var_xml_theme VARCHAR2(32767);
BEGIN
PROCMAPLIST (empty, var_xml_theme);
END maps;
--create checkboxes--
PROCEDURE PROCCHECKLIST
(par_check_list IN OUT owa_util.ident_arr,
par_xml_theme OUT VARCHAR2
AS
CURSOR cur_map_list IS
SELECT MT.map_title
MI.map_id
OMSN.map_sheet_number_id
WRMF.web_raster_map_id
FROM MAP_TITLE MT
MAP_INFO MI
MAP_SHEET_NUMBER OMSN,
WEB_RASTER_MAP_FILE WRMF,
WHERE MI.map_title_id = MT.map_title_id
AND MI.map_id = OMSN.map_id
AND WRMF.map_id = MI.map_id
AND WRMF.map_sheet_number_id = OMSN.map_sheet_number_id;
var_map_list cur_map_list%ROWTYPE;
var_xml_theme VARCHAR2(32767);
BEGIN
htp.htmlOpen;
htp.headOpen;
htp.headClose;
htp.bodyOpen;
htp.print('<FORM METHOD = "post"
ACTION = "'||gvar_proc_host||'.mappackage.procdisplay">');
htp.print('<FIELDSET>
<LEGEND> Select the maps you wish to display </LEGEND>');
FOR n IN 1 .. par_map_list.COUNT
LOOP
FOR var_map_list IN cur_map_list (par_map_list (n))
LOOP
htp.print(' <UL>
<LI>
<LABEL FOR = "WRMF'||
var_map_list.web_raster_map_id||'">
<INPUT type = "checkbox"
id = "WRMFB'||
var_map_list.web_raster_map_id||'"
name = "WRMFB'||
var_map_list.web_raster_map_id||'"
value = "'||var_map_list.web_raster_map_id||'"
/>
Map title: '|| var_map_list.map_title||'<BR>
Sheet number: '||var_map_list.map_sheet_number||'');
htp.print('</LABEL>
</LI>
</UL>');
END LOOP;
END LOOP;
htp.print('</FIELDSET>');
htp.print('<p>
<INPUT TYPE = "submit"
NAME = "Display selected maps"
VALUE = "Display selected maps" />
</FORM>');
htp.bodyClose;
END PROCCHECKLIST;Thank you for reading. Kind regards
TimDear everyone
I have now resolved the problems I was having with multiple values and checkboxes, thanks to comments in this thread, read large chucks of Oracle PL/SQL Programming by Steve Feuerstein and suddenly realising where I am going wrong in terms of thinking.
For a start, I when I was dealing with the multiple values, I was trying to get PL/SQL to pass them out. Of course this is done by the action part of the input form. Although I have not done much web coding, I did know about this. However because I was so engrossed in trying to understand how multiple values work, I didn't relate the two ideas. I even mind mapping the problem and still didn't get it.
I also did not think to change my the action from post command to get, so that I could see what was coming out. However that would not have made too much of a difference because the other problem I had was related to where sub programmes were declared. The function which received the values was privately declared, and not in the package spec. This meant the web browser could not find the function as that can only make use of the programmes declared publicly.
Once I made these changes, as well as correcting other minor typing mistakes, the values passed through as expected. The only other mistake I made was to include the name option after the submit input type. In my case I did not need to submit the value of that button. The revised code is as follows. In this version I replaced the function with a procedure that simply prints the checkbox values to screen. I have also made the input form action get, instead of post, so that the values can be seen in the web browser address bar:
create or replace
PACKAGE MAPSITE AS
PROCEDURE MAPS;
PROCEDURE PROCCHECKLIST
(par_check_list IN OUT OWA_UTIL.IDENT_ARR
PROCEDURE PROCDISPLAY
(maplist IN OUT OWA_UTIL.IDENT_ARR);
END MAPSITE;
create or replace
PACKAGE BODY MAPSITE AS
--Global variables--
gvar_mapviewer_host VARCHAR2(56) := 'http://tiger.iso.port.ac.uk:7785/mapviewer/omserver';
gvar_proc_host VARCHAR2(56) := 'http://tiger.iso.port.ac.uk:7785/www/geg50160';
gvar_xml_request VARCHAR2(100) :='?xml_request=<?xml version="1.0" standalone="yes"?>';
--Main calling programming--
PROCEDURE MAPS AS
empty owa_util.ident_arr;
BEGIN
PROCCHECKLIST (empty);
END MAPS;
--create checkboxes--
PROCEDURE PROCCHECKLIST
(par_check_list IN OUT owa_util.ident_arr
AS
CURSOR cur_map_list IS
SELECT MT.map_title,
MI.map_id,
OMSN.map_sheet_number_id,
WRMF.web_raster_map_id
FROM MAP_TITLE MT,
MAP_INFO MI,
MAP_SHEET_NUMBER OMSN,
WEB_RASTER_MAP_FILE WRMF
WHERE MI.map_title_id = MT.map_title_id
AND MI.map_id = OMSN.map_id
AND WRMF.map_id = MI.map_id
AND WRMF.map_sheet_number_id = OMSN.map_sheet_number_id;
BEGIN
htp.htmlOpen;
htp.headOpen;
htp.headClose;
htp.bodyOpen;
htp.print('<FORM METHOD = "post"
ACTION = "'||gvar_proc_host||'.mappackage.procdisplay">');
htp.print('<FIELDSET>
<LEGEND> Select the maps you wish to display </LEGEND>');
FOR var_map_list IN cur_map_list
LOOP
htp.print(' <UL>
<LI>
<LABEL FOR = "WRMF'||
var_map_list.web_raster_map_id||'">
<INPUT type = "checkbox"
id = "WRMFB'||
var_map_list.web_raster_map_id||'"
name = "maplist"
CHECKED = "' ||
par_map_list ||'"
value = "'||var_map_list.web_raster_map_id||'"
/>
Map title: '|| var_map_list.map_title||'<BR>
Sheet number: '||var_map_list.map_sheet_number||'');
htp.print('</LABEL>
</LI>
</UL>');
END LOOP;
htp.print('</FIELDSET>');
htp.print('<p>
<INPUT TYPE = "submit"
VALUE = "Display selected maps" />
</FORM>');
htp.bodyClose;
END PROCCHECKLIST;
---PROCDISPLAY PROCEDURE---
PROCEDURE PROCDISPLAY (maplist IN OUT owa_util.ident_arr)
IS
BEGIN
FOR n IN 1..maplist.COUNT
LOOP
htp.print('Checkbox value i.e. var_map_list.web_raster_map_id is: ' ||maplist(n)||'
<P>');
END LOOP;
END PROCDISPLAY;
END MAPSITE;Kind regards
Tim -
PLS-00306: wrong number or types of arguments in call
Hi,
Oracle9i
created a procedure which will retrieve the records.
As the procedure is to only retrieve the records so it does not have any IN parameters
But on executing the procedure gets the below error:
PLS-00306: wrong number or types of arguments in call to 'GET_PRODUCT_DETAILS'
I have called the procedure as below:
=======================
Declare
v_cur ...%type;
BEGIN
Package_name.GET_PRODUCT_DETAILS(v_cur);
END;
Procedure Body
==========
create or replace PROCEDURE GET_PRODUCT_DETAILS( v_cur OUT Cursor)
is
begin
end;
/Try creating the procedure with the out parameter as sys_refcursor.
create or replace PROCEDURE GET_PRODUCT_DETAILS( v_cur OUT sys_refCursor)
And declare the variable in your outer block also as sys_refcursor.
Declare
v_cur sys_refcursor;
BEGIN
Package_name.GET_PRODUCT_DETAILS(v_cur);
END;
Of course this would require that your actual procedure GET_PRODUCT_DETAILS should have a statement like
" open V_cur for some select statement that you use to retrieve the records".
You could also create GET_PRODUCT_DETAILS with the same %type decalration which you use in the outer block
eg
create or replace PROCEDURE GET_PRODUCT_DETAILS( v_cur OUT x.y%type)
Declare
v_cur x.y%type;
BEGIN
Package_name.GET_PRODUCT_DETAILS(v_cur);
END;
/ -
PLS-00306: wrong number or types of arguments in call to 'XMLAGG'
Hello,
I have a procedure that creates an xml file and I need to order by an admission date using XMLAGG. When I run the query on it's own, with it not being inside a procedure it runs fine. When I try to run it within a procedure it throws back the above error message, unless I comment out the 'order by'. Does anyone know how I can get this to run with the order by within a procedure?
We are using Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production.
Thanks.
SELECT XMLELEMENT("Stakeholder", XMLELEMENT("ULI", a.ULI),
XMLELEMENT("Gender",a.GENDER),
XMLELEMENT("BirthDate", XMLATTRIBUTES(a.BIRTH_DATE_TYPE AS "type"), a.BIRTH_DATE),
XMLELEMENT("HealthCareNumberInformation",XMLELEMENT("HealthCareNumber",a.HCN),
XMLFOREST((a.PROV_ISSUING_HCN) AS "ProvinceTerritoryIssuingHCN")),
XMLELEMENT("SubmissionType",a.SUBMISSION_TYPE),
(SELECT XMLAGG(XMLELEMENT("ServiceEpisode", XMLELEMENT("AdmissionDate", a2.ADMISSION_DATE )) ORDER BY a2.ADMISSION_DATE)
FROM admissions a2
, discharge d2
WHERE a.uli = a2.uli
AND a.uli = d2.uli
AND a2.encounter_number = d2.encounter_number
)).getClobVal() AS "result"
FROM Admissions a
, Discharge d3
, Diagnosis d
WHERE a.ULI = d3.ULI
AND a.ENCOUNTER_NUMBER = d3.ENCOUNTER_NUMBER
AND a.ULI = d.ULI
AND a.ENCOUNTER_NUMBER = d.ENCOUNTER_NUMBER
GROUP BY a.ULI
, a.GENDER
, a.BIRTH_DATE_TYPE
, a.BIRTH_DATE
, a.HCN
, a.PROV_ISSUING_HCN
, a.SUBMISSION_TYPEcreate table mytab (a number,b number);
insert into mytab values (1,100);
insert into mytab values (2,200);
SVIL>SELECT xmlelement("A",XMLAGG(XMLELEMENT("B", b ) ORDER BY b)) FROM mytab;
XMLELEMENT("A",XMLAGG(XMLELEMENT("B",B)ORDERBYB))
<A><B>100</B><B>200</B></A>
SVIL>create or replace function getx return xmltype is
2 r xmltype;
3 begin
4 SELECT xmlelement("A",XMLAGG(XMLELEMENT("B", b ) ORDER BY b))
5 into r
6 FROM mytab;
7 return r;
8 end;
9 /
Avvertimento: funzione creata con errori di compilazione.
SVIL>sho err
Errori in FUNCTION GETX:
LINE/COL ERROR
4/1 PL/SQL: SQL Statement ignored
4/23 PLS-00306: wrong number or types of arguments in call to 'XMLAGG'
4/23 PL/SQL: ORA-00904: "XMLAGG": invalid identifier
SVIL>
SVIL>ed a
SVIL>select * from v$version where rownum=1
2 ;
BANNER
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit ProductionThe same code works on 10.2.0.4 and 11.1.0.6, don't have other versions to test
Testing your code
SVIL>declare
2 d integer;
3 x xmltype;
4 begin
5 select deptno, xmlagg (xmlelement (e, ename || ',') order by ename)
6 into d, x
7 from emp
8 where deptno = 10
9 group by deptno;
10 end;
11 /
select deptno, xmlagg (xmlelement (e, ename || ',') order by ename)
ERRORE alla riga 5:
ORA-06550: line 5, column 19:
PLS-00306: wrong number or types of arguments in call to 'XMLAGG'
ORA-06550: line 5, column 19:
PL/SQL: ORA-00904: "XMLAGG": invalid identifier
ORA-06550: line 5, column 4:
PL/SQL: SQL Statement ignored
SVIL>select deptno, xmlagg (xmlelement (e, ename || ',') order by ename) from emp group by deptno;
DEPTNO XMLAGG(XMLELEMENT(E,ENAME||',')ORDERBYENAME)
1 <E>mike,</E><E>tom,</E>
2 <E>carl,</E> Max
Edited by: Massimo Ruocchio on Dec 7, 2009 11:11 PM
Corrected return type -
PLS-00306: wrong number or types of arguments in call to '(FUNCTION)'
Hi all,
I've spent quite some time trying to get this to work, but is appears that none of the code samples I have tried work with this version of ODP.Net : 2.102.2.20.
It's the most basic thing : return a weak typed resultset from an oracle function using weak typed SYS_REFCURSOR. I got this to work with a procedure, but no way this works with a function.
I'm using the code approach from this source : http://www.oracle.com/technology/pub/articles/mastering_dotnet_oracle/williams_refcursors.html
CREATE OR REPLACE FUNCTION
fn_getItemsByDispNumber(p_Number in varchar2)
return sys_refcursor
IS
resultset sys_refcursor;
begin
open resultset for
....select statement
return resultset;
end;
Exception is : ORA-06550: line 1
PLS-00306: wrong number or types of arguments in call to '(fn_getItemsByDispNumber)'
Using strong types is not an option I have too many columns adn result sets that it makes no sense.
I tried to obtain the sys_refcursor as return value and as output parameters and it's the same results. I also tried adding the return value parameter to the command object first, but with no luck (same error).
Is there some magical trick thet must be done for this simple thing to work ?
Thanksuser10940202 wrote:
The calling code looks like this :
Dim cmd As OracleCommand = New OracleCommand("fn_getItemsByDispNumber", con)
cmd.CommandType = CommandType.StoredProcedure
Dim p_refcursor As OracleParameter = New OracleParameter
p_refcursor.OracleDbType = OracleDbType.RefCursor
p_refcursor.Direction = ParameterDirection.ReturnValue
cmd.Parameters.Add(p_refcursor)
Dim inputparm As OracleParameter = New OracleParameter
inputparm.OracleDbType = OracleDbType.Varchar2
inputparm.Name = "p_Number"
p_refcursor.Direction = ParameterDirection.Input
cmd.Parameters.Add(inputparm)
cmd.Parameters.Add(p_refcursor)
'ExecuteNonQuery() also fails with the same error message
Dim da As OracleDataAdapter = New OracleDataAdapter(cmd)
Dim ds As DataSet = New DataSet
da.Fill(ds)
I also tried to rever the order in which parameters are specified but same the same error persists. I also tried with output parameter of type SYS_REFCURSOR but no luck, same exact error.
Is it possible that weakly typed cursors are not supported with functions ? That would be strange because it's the first use I can think of for the function concept?
Edited by: user10940202 on Sep 14, 2009 12:44 PMHi,
Looks like a few things are jumbled together here...
You have p_refcursor.Direction = ParameterDirection.Input and the parameters added to the collection multiple times, etc...
You should just need something like this:
Dim p_refcursor As OracleParameter = New OracleParameter
p_refcursor.OracleDbType = OracleDbType.RefCursor
p_refcursor.Direction = ParameterDirection.ReturnValue
Dim inputparm As OracleParameter = New OracleParameter
inputparm.OracleDbType = OracleDbType.Varchar2
inputparm.Name = "p_Number"
inputparm.Value = <Some Value>
cmd.Parameters.Add(p_refcursor)
cmd.Parameters.Add(inputparm)Regards,
Mark -
PLS-00306: wrong number or types of arguments in call to 'TO_CURRENT'
Hi,
I'm a newbie with Oracle procedures and Oracle Spatial, and I have this problem:
I have a table named POINT which is in a older version in Oracle Spatial, is a Relational Model with the following tables: POINT, POINT_SDO_INDEX, POINT_SDODIM, POINT_SDOGEOM, POINT_SDOLAYER. I think returned by Arcsde this way, and I can't modify this. Only POINT and POINT_SDOGEOM have data. I need this data in a newer version of Oracle, so I tried the SDO_MIGRATE.TO_CURRENT procedure, in order to do it, I created a table called NEWPOINT with the same columns as POINT, and I added a column LOC with type SDO_GEOMETRY. I'm using Oracle 10g and I tried this procedure (http://download.oracle.com/docs/cd/B13789_01/appdev.101/b10826/sdo_objmigr.htm) in SQL developer:
begin
execute immediate mdsys.sdo_migrate.to_current('POINT','NEWPOINT','SDO_GID','LOC','POINT','INSERT');
end;
SDO_GID is the same in both tables and the table NEWPOINT is empty.
This is the error I got:
PLS-00306: wrong number or types of arguments in call to 'TO_CURRENT'
I think I'm doing nothing wrong, and I've been trying to solve it for 4 days without any progress. I would be gratefull if you can help me. Thanks.Thanks for answer so quickly Boneist, I tried what you said and I have the same error.
This is the description of Mdsys.sdo_migrate, TO_CURRENT (1) is what I need and I don't see anything strange.
desc mdsys.sdo_migrate
PROCEDURE Argument Name Type IN/OUT Default
FROM_815_TO_81X TABNAME VARCHAR2 IN unknown
FROM_815_TO_81X COMMIT_INT NUMBER IN unknown
OGIS_METADATA_FROM <none> IN unknown
OGIS_METADATA_TO <none> IN unknown
TO_CURRENT (1) LAYER VARCHAR2 IN unknown
TO_CURRENT (1) NEWTABNAME VARCHAR2 IN unknown
TO_CURRENT (1) GIDCOLUMN VARCHAR2 IN unknown
TO_CURRENT (1) GEOCOLNAME VARCHAR2 IN unknown
TO_CURRENT (1) LAYER_GTYPE VARCHAR2 IN unknown
TO_CURRENT (1) UPDATE_FLAG VARCHAR2 IN unknown
TO_CURRENT (2) TABNAME VARCHAR2 IN unknown
TO_CURRENT (2) COLUMN_NAME VARCHAR2 IN unknown
TO_CURRENT (2) COMMIT_INT NUMBER IN unknown
TO_CURRENT (3) (FUNCTION) <return value> OBJECT OUT unknown
TO_CURRENT (3) GEOM OBJECT IN unknown
TO_CURRENT (3) DIM VARRAY IN unknown
TO_81X LAYER VARCHAR2 IN unknown
TO_81X NEWTABNAME VARCHAR2 IN unknown
TO_81X GIDCOLUMN VARCHAR2 IN unknown
TO_81X GEOCOLNAME VARCHAR2 IN unknown
TO_81X LAYER_GTYPE VARCHAR2 IN unknown
TO_81X UPDATE_FLAG VARCHAR2 IN unknown
22 rows selected -
PLS-00306: wrong number or types of arguments in call to 'BEFOREREPORTTRIGG
Hello..
Hopefully a quick one for somebody..
Getting following error message..
[052710_034807986][][EXCEPTION] SQLException encounter while executing data trigger....
java.sql.SQLException: ORA-06550: line 4, column 20:
PLS-00306: wrong number or types of arguments in call to 'BEFOREREPORTTRIGGER'
ORA-06550: line 4, column 1:
PL/SQL: Statement ignored....when I'm trying to call a trigger in a XSL script that is used to create a XML PUblisher report to run in ORACLE Financials..
Anyway, Procedure header & Spec at fault is..
CREATE OR REPLACE PACKAGE Subixclt IS
FUNCTION BeforeReportTrigger(p_order_by IN VARCHAR2) RETURN VARCHAR2;
ordered VARCHAR2(50);
raisedby VARCHAR2(50);
status VARCHAR2(50);
claimant VARCHAR2(50);
expense_date_from DATE;
expense_date_to DATE;
END;
CREATE OR REPLACE PACKAGE BODY Subixclt IS
FUNCTION BeforeReportTrigger(p_order_by IN VARCHAR2)RETURN VARCHAR2 IS
BEGIN
DECLARE
ordered VARCHAR2(50);
raisedby VARCHAR2(50);
status VARCHAR2(50);
claimant VARCHAR2(100);
expense_date_from DATE;
expense_date_to DATE;
BEGIN
IF (p_order_by='Expense Report Number') THEN
ordered :='order by 1 asc;';
ELSIF (p_order_by='Person Claiming') THEN
ordered :='order by 2 asc;';
ELSIF (p_order_by='Submit Date') THEN
ordered :='order by 4 asc;';
END IF;
RETURN(p_order_by);
END;
END;
END;PLease ask if yous need any further info..
muchos gracias..
StevenOK people sorry - I trust this is what you'll need..
This is the data template where the call to the trigger is placed..
<?xml version="1.0" encoding="utf-8"?>
<dataTemplate name="UofS_OutstandngExpenses_Report" defaultPackage="SUBIXCLT" dataSourceRef="FINDEV" version="1.0">
<properties>
<property name="xml_tag_case" value="upper" />
<property name="include_parameters" value="true" />
<property name="debug_mode" value="on" />
</properties>
<parameters>
<parameter name="claimant" dataType="character" />
<parameter name="expense_date_from" dataType="date" />
<parameter name="expense_date_to" dataType="date" />
<parameter name="raisedby" dataType="character" />
<parameter name="status" dataType="character" />
</parameters>
<dataQuery>
<sqlStatement name="Q1">
<![CDATA[
SELECT DISTINCT
erh.invoice_num,
pap.full_name EMP_CLAIMING,
DECODE(NVL(erh.expense_status_code, 'Not yet Submitted (NULL)'), 'CANCELLED', 'CANCELLED',
'EMPAPPR', 'Pending Individuals Approval', 'ERROR', 'Pending System Administrator Action',
'HOLD_PENDING_RECEIPTS ', 'Hold Pending Receipts', 'INPROGRESS', 'In Progress', 'INVOICED', 'Ready for Payment',
'MGRAPPR', 'Pending Payables Approval', 'MGRPAYAPPR', 'Ready for Invoicing', 'PAID', 'Paid',
'PARPAID', 'Partially Paid', 'PAYAPPR', 'Payables Approved', 'PENDMGR', 'Pending Manager Approval',
'PEND_HOLDS_CLEARANCE', 'Pending Payment Verification', 'REJECTED', 'Rejected', 'RESOLUTN', 'Pending Your Resolution',
'RETURNED', 'Returned', 'SAVED', 'Saved', 'SUBMITTED', 'Submitted', 'UNUSED', 'UNUSED',
'WITHDRAWN','Withdrawn', 'Not yet Submitted (NULL)') "EXPENSE_STATUS" ,
NVL(TO_CHAR(erh.report_submitted_date,'dd-MON-yyyy'),'NULL') SUBMIT_DATE,
NVL(TO_CHAR(erh.expense_last_status_date,'dd-MON-yyyy'),'NULL') LAST_UPDATE,
erh.override_approver_name ER_Approver,
fu.description EXP_ADMIN,
erh.total,
erh.description
FROM
AP_EXPENSE_REPORT_HEADERS_all erh,
per_all_people_f pap, fnd_user fu
WHERE erh.employee_id = pap.person_id
AND fu.user_id = erh.created_by
AND NVL(erh.expense_status_code, 'Not yet Submitted') NOT IN ('MGRAPPR', 'INVOICED', 'PAID', 'PARPAID')
AND pap.full_name = NVL(:claimant, pap.full_name)
AND TRUNC(erh.report_submitted_date) BETWEEN NVL(:expense_date_from, '01-JAN-1999') AND NVL(:expense_date_to,'31-DEC-2299')
AND fu.description = NVL(:raisedby,fu.description)
AND erh.expense_status_code = NVL(:status,erh.expense_status_code) &ordered]]>
</sqlStatement>
</dataQuery>
<dataTrigger name="beforeReportTrigger" source="SUBIXCLT.beforeReportTrigger"/>
<dataStructure>
<group name="G_XP_CLM_TRACKNG" source="Q1">
<element name="INVOICE_NUM" value="INVOICE_NUM" />
<element name="EMP_CLAIMING" value="EMP_CLAIMING" />
<element name="EXPENSE_STATUS" value="EXPENSE_STATUS" />
<element name="SUBMIT_DATE" value="SUBMIT_DATE" />
<element name="LAST_UPDATE" value="LAST_UPDATE" />
</group>
</dataStructure>
</dataTemplate>..when I try to run the Concurrent Program (ORACLE uses a Java Program to run it somehow..) this is the log file produced (note, I dont use the parameter &ordered that the trigger is for)..
XDO Data Engine Version No: 5.6.3
Resp: 20707
Org ID : 102
Request ID: 2481618
All Parameters: raisedby=:status=:claimant=:expense_date_from=:expense_date_to=:p_order_by=
Data Template Code: SUBIXCLT
Data Template Application Short Name: PO
Debug Flag: N
{raisedby=, p_order_by=, claimant=, expense_date_to=, expense_date_from=, status=}
Calling XDO Data Engine...
[052810_033436415][][STATEMENT] Start process Data
[052810_033436416][][STATEMENT] Process Data ...
[052810_033436418][][STATEMENT] Executing data triggers...
[052810_033436418][][STATEMENT] BEGIN
SUBIXCLT.claimant := :claimant ;
SUBIXCLT.expense_date_from := :expense_date_from ;
SUBIXCLT.expense_date_to := :expense_date_to ;
SUBIXCLT.raisedby := :raisedby ;
SUBIXCLT.status := :status ;
:XDO_OUT_PARAMETER := 1;
END;
[052810_033436421][][STATEMENT] 1: :
[052810_033436421][][STATEMENT] 2:null :
[052810_033436421][][STATEMENT] 3:null :
[052810_033436422][][STATEMENT] 4: :
[052810_033436422][][STATEMENT] 5: :
[052810_033436504][][STATEMENT] Executing data triggers...
[052810_033436504][][STATEMENT] Declare
l_flag Boolean;
BEGIN
l_flag := SUBIXCLT.beforeReportTrigger ;
if (l_flag) then
:XDO_OUT_PARAMETER := 1;
end if;
end;
[052810_033436518][][EXCEPTION] SQLException encounter while executing data trigger....
java.sql.SQLException: ORA-06550: line 4, column 20:
PLS-00306: wrong number or types of arguments in call to 'BEFOREREPORTTRIGGER'
ORA-06550: line 4, column 1:
PL/SQL: Statement ignored
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:590)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1973)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1119)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2191)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:2064)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2989)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:658)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:736)
at oracle.apps.xdo.dataengine.XMLPGEN.executeTriggers(XMLPGEN.java:650)
at oracle.apps.xdo.dataengine.XMLPGEN.processData(XMLPGEN.java:263)
at oracle.apps.xdo.dataengine.XMLPGEN.processXML(XMLPGEN.java:215)
at oracle.apps.xdo.dataengine.XMLPGEN.writeXML(XMLPGEN.java:254)
at oracle.apps.xdo.dataengine.DataProcessor.processDataStructre(DataProcessor.java:390)
at oracle.apps.xdo.dataengine.DataProcessor.processData(DataProcessor.java:355)
at oracle.apps.xdo.oa.util.DataTemplate.processData(DataTemplate.java:348)
at oracle.apps.xdo.oa.cp.JCP4XDODataEngine.runProgram(JCP4XDODataEngine.java:293)
at oracle.apps.fnd.cp.request.Run.main(Run.java:161)
+---------------------------------------------------------------------------+
Executing request completion options...
+------------- 1) PUBLISH -------------+
Beginning post-processing of request 2481618 on node FINDEV at 28-MAY-2010 15:34:37.
Post-processing of request 2481618 failed at 28-MAY-2010 15:34:39 with the error message:
One or more post-processing actions failed. Consult the OPP service log for details... and OPP service log contains..
Template code: SUBIXCLT
Template app: PO
Language: en
Territory: GB
Output type: PDF
[5/28/10 3:34:39 PM] [UNEXPECTED] [46385:RT2481618] java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor119.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at oracle.apps.xdo.common.xml.XSLT10gR1.invokeParse(XSLT10gR1.java:566)
at oracle.apps.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:231)
at oracle.apps.xdo.common.xml.XSLTWrapper.transform(XSLTWrapper.java:182)
at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:1044)
at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:997)
at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:212)
at oracle.apps.xdo.template.FOProcessor.createFO(FOProcessor.java:1665)
at oracle.apps.xdo.template.FOProcessor.generate(FOProcessor.java:975)
at oracle.apps.xdo.oa.schema.server.TemplateHelper.runProcessTemplate(TemplateHelper.java:5926)
at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:3458)
at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:3547)
at oracle.apps.fnd.cp.opp.XMLPublisherProcessor.process(XMLPublisherProcessor.java:290)
at oracle.apps.fnd.cp.opp.OPPRequestThread.run(OPPRequestThread.java:157)
Caused by: org.xml.sax.SAXParseException: <Line 1, Column 1>: XML-20108: (Fatal Error) Start of root element expected.
at oracle.xdo.parser.v2.XMLError.flushErrorHandler(XMLError.java:441)
at oracle.xdo.parser.v2.XMLError.flushErrors1(XMLError.java:303)
at oracle.xdo.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:343)
at oracle.xdo.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:285)
at oracle.xdo.parser.v2.XMLParser.parse(XMLParser.java:289)
... 16 moreMany thanks for looking..
Steven -
PLS-00306: wrong number or types of arguments in call to 'START_COMMAND'
I've got a package pkgrun with several procedures and when I compile the package I get the message:
Warning: execution completed with warning
PACKAGE BODY pkgrun Compiled.
44/7 PLS-00306: wrong number or types of arguments in call to 'START_COMMAND'The procedure start_block in pkgrun with line 44:
PROCEDURE start_block (id_run_v IN NUMBER,
id_block_v IN NUMBER)
IS
CURSOR c_blockcommand(id_block_v NUMBER) IS
SELECT c.id, c.command, c.returntype, c.testtype, c.testvalue
FROM command c
WHERE c.id_block = id_block_v
ORDER BY c.run_sequence;
BEGIN
FOR r_blockcommand IN c_blockcommand(id_block_v) LOOP
start_command(r_blockcommand.testtype, r_blockcommand.command, r_blockcommand.testvalue, r_blockcommand.id, id_run_v, r_blockcommand.returntype);
END LOOP;
END start_block;The procedure start_command in pkgrun:
PROCEDURE start_command (testtype_v IN VARCHAR2,
command_v IN VARCHAR2,
testvalue_v IN VARCHAR2,
id_command_v IN NUMBER,
id_run_v IN NUMBER,
returntype_v IN VARCHAR2)
IS
testresult_v VARCHAR2(100);
testresult_number_v NUMBER;
testresult_cursor_v REF CURSOR;
number_rows NUMBER;
BEGIN
IF testtype_v = '' THEN
EXECUTE IMMEDIATE command_v;
ELSE
IF retruntype_v = 'NUMBER' THEN
EXECUTE IMMEDIATE command_v
INTO testresult_number_v;
test_result_v := to_char(testresult_number_v);
ELSIF returntype_v = 'CURSOR' THEN
EXECUTE IMMEDIATE command_v
INTO testresult_curor_v;
number_rows := testresult_cursor_v%ROWCOUNT;
test_result_v := to_char(number_rows);
ELSE
EXECUTE IMMEDIATE command_v
INTO testresult_v;
END IF;
testresult_v := to_char(testresult_v);
test_value(testtype_v, testvalue_v, testresult_v, id_command_v, id_run_v);
END IF;
END start_command;I hope someone can help me.describe command;
Name Null Type
ID NOT NULL NUMBER
ID_BLOCK NOT NULL NUMBER
COMMAND VARCHAR2(500)
RETURNTYPE VARCHAR2(100)
TESTTYPE VARCHAR2(100)
TESTVALUE VARCHAR2(100)
ENABLED VARCHAR2(100)
RUN_SEQUENCE NUMBER
8 rows selected -
PLS-00306: wrong number or types of arguments in call to 'p_proc'
Hi,
This code call a procedure which takes a VARRAY type as parameter. I face this error
when i compile the code.
java.sql.SQLException: ORA-06550: Line 1, column 7 :
PLS-00306: wrong number or types of arguments in call to 'p_proc'
ORA-06550: Line 1, column 7 :
PL/SQL: Statement ignored
someone can tell what's wrong. Below, you have the source code used in this test case
a sample code is welcome.
import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.oracore.Util;
import oracle.jdbc.*;
import java.math.BigDecimal;
public class ArrayExample3 {
public static void main(String args[]) throws Exception {
// Register the Oracle JDBC driver
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
// Connect to the database
Connection conn =
DriverManager.getConnection("jdbc:oracle:thin:@Anais:1521:BLB",
"candide", "candide");
// It's faster when auto commit is off
conn.setAutoCommit(false);
// create a new ARRAY object
int elements[] = {300, 400, 500, 600};
ArrayDescriptor desc = ArrayDescriptor.createDescriptor
("NUM_VARRAY", conn);
ARRAY newArray = new ARRAY(desc, conn, elements);
CallableStatement cs = conn.prepareCall("{call pe_cl2.p_proc(?)}");
( (OracleCallableStatement) cs).setArray(1, newArray);
cs.executeUpdate();
// Close all the resources
cs.close();
conn.close();
CREATE OR REPLACE TYPE num_varray_t AS VARRAY(10) OF NUMBER;
CREATE TABLE varray_table2 (col1 number);
create or replace package candide.PE_CL2 is
PROCEDURE p_proc(Id_clt IN num_varray);
end PE_CL2;
create or replace package body candide.PE_CL2 is
PROCEDURE p_proc(Id_clt IN num_varray) IS
BEGIN
FORALL i IN Id_clt.FIRST .. Id_clt.LAST
INSERT INTO varray_table2 VALUES (Id_clt(i));
COMMIT;
END;
end PE_CL2;
thanks PeterYou create type num_varray_t, but in procedure your input parameter is of type num_varray. How this type is specified?
-
Error PLS-00306: wrong number or types of arguments in call to
I am getting the following Error when calling stored Procedure, I have tried with Last Parameter PRESULT and WITHOUT IT, it fails in both the instance.
=======================================================================
"System.Data.OracleClient.OracleException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'UPDATECOTRACKING'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
=======================================================================
signature of Stored Procedure is as follow
(pmaster_key IN sca_costtrackinglog.master_key%type,
pdoc_master_key IN sca_costtrackinglog.master_key%type,
pfrenumber IN sca_costtrackinglog.fre_number%type,
pnotice1 IN sca_costtrackinglog.notice1%type,
pnotice2 IN sca_costtrackinglog.notice2%type,
padditreceived IN sca_costtrackinglog.additreceived%type,
pfreanticipate IN sca_costtrackinglog.freanticipate%type,
pdateofnot IN sca_costtrackinglog.dateofnot%type,
pdateofmeeting IN sca_costtrackinglog.dateofmeeting%type,
psenttocontractor IN sca_costtrackinglog.senttocontractor%type,
pcouforexecution IN sca_costtrackinglog.couforexecution%type,
pcomments IN sca_costtrackinglog.comments%type,
pcreateby IN sca_costtrackinglog.createby%type,
peditby IN sca_costtrackinglog.editby%type,
presult OUT number) is
This is the Trace of Parameters from actual Call, that fails with above error.
Parameter Name : PMASTER_KEY(Input),Type(AnsiString) Size(26), Value = 000328JYA30008HSWBCK01NYC
Parameter Name : pdoc_master_key(Input),Type(AnsiString) Size(26), Value = 310657KLF30025HSWBCK01NYC
Parameter Name : PFRENUMBER(Input),Type(AnsiString) Size(12), Value = 00015
Parameter Name : PNOTICE1(Input),Type(DateTime) Size(1), Value = 3/25/2010
Parameter Name : PNOTICE2(Input),Type(DateTime) Size(1), Value =
Parameter Name : PADDITRECEIVED(Input),Type(DateTime) Size(1), Value =
Parameter Name : PFREANTICIPATE(Input),Type(DateTime) Size(1), Value =
Parameter Name : PDATEOFNOT(Input),Type(DateTime) Size(1), Value =
Parameter Name : PDATEOFMEETING(Input),Type(DateTime) Size(1), Value =
Parameter Name : PSENTTOCONTRACTOR(Input),Type(DateTime) Size(1), Value =
Parameter Name : pcouforexecution(Input),Type(DateTime) Size(1), Value =
Parameter Name : pcomments(Input),Type(AnsiString) Size(250), Value =
Parameter Name : PCREATEBY(Input),Type(AnsiString) Size(50), Value = NYCSCA\tmpns2
Parameter Name : PEDITBY(Input),Type(AnsiString) Size(50), Value = NYCSCA\tmpns2
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Below is the trace from Data.OracleClient.OracleCommandBuilder.DeriveParameters(Cmd)
Parameter Name : PMASTER_KEY(Input),Type(AnsiString) Size(2000), Value =
Parameter Name : PDOC_MASTER_KEY(Input),Type(AnsiString) Size(2000), Value =
Parameter Name : PFRENUMBER(Input),Type(AnsiString) Size(2000), Value =
Parameter Name : PNOTICE1(Input),Type(DateTime) Size(0), Value =
Parameter Name : PNOTICE2(Input),Type(DateTime) Size(0), Value =
Parameter Name : PADDITRECEIVED(Input),Type(DateTime) Size(0), Value =
Parameter Name : PFREANTICIPATE(Input),Type(DateTime) Size(0), Value =
Parameter Name : PDATEOFNOT(Input),Type(DateTime) Size(0), Value =
Parameter Name : PDATEOFMEETING(Input),Type(DateTime) Size(0), Value =
Parameter Name : PSENTTOCONTRACTOR(Input),Type(DateTime) Size(0), Value =
Parameter Name : PCOUFOREXECUTION(Input),Type(DateTime) Size(0), Value =
Parameter Name : PCOMMENTS(Input),Type(AnsiString) Size(2000), Value =
Parameter Name : PCREATEBY(Input),Type(AnsiString) Size(2000), Value =
Parameter Name : PEDITBY(Input),Type(AnsiString) Size(2000), Value =
Parameter Name : PRESULT(Output),Type(VarNumeric) Size(0), Value =
******************************************************************************************************************In the Oracle database, the body of the package FWA_PRI API, the procedure ValidatePri declares P_PriREc as being :
PAYMENT_REQUEST_IMPORT%ROWTYPE
As you can see above, the DoPri Procedure expects a type p_PriRec as its second argument.
Therefore in my procedure I do the following:
create or replace procedure spMatchPayment is
BEGIN
DECLARE
CURSOR StageCurs IS SELECT * FROM PAYMENT_REQUEST_IMPORT;
p_payment_req_import PAYMENT_REQUEST_IMPORT%ROWTYPE;
BEGIN
OPEN StageCurs();
LOOP
FETCH StageCurs INTO P_payment_req_import;
EXIT WHEN StageCurs%NOTFOUND;
fwa_pri.DoPri(NULL, fwa_pri.DoPri('M',P_PriRec => p_payment_req_import);
END LOOP;
CLOSE StageCurs;
END;
end spMatchPayment;
Now, when I am trying to compile I am getting the Compilation errors for PROCEDURE IMPACT.SPMATCHPAYMENT
Error: PLS-00306: wrong number or types of arguments in call to 'DOPRI'
Line: 16
Text: fwa_pri.DoPri(NULL,P_PriRec => p_payment_req_import);
I don't see what's wrong on my code......HELP!! -
PLS-00306: wrong number or types of arguments in call to 'PROC
I m facing this error in my Package... i have given a small code for my prob...
Plz try to rectify this........
Thank u.
abhilasha.
1 create table tt
2 (ename varchar2(30)
3* )
SQL> /
Table created.
SQL> create table ttt
2 as select * from tt;
Table created.
SQL> insert into tt
2 values('abhi');
SQL> create or replace procedure proc_add(emp_rec tt%rowtype)
2 is
3 begin
4 insert into ttt(ename)
5 values(emp_rec.ename);
6 --commit;
7 end proc_add;
8 /
Procedure created.
SQL> execute proc_add('abhi');
BEGIN proc_add('abhi'); END;
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'PROC_ADD'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignoredPlease help me, I don't know waht is the mistake, but I have this error, my mails [email protected]
Thanks
ORA-06550 linea 1, column 7
PLS-00306 wrong number or types of arguments in call to "PRC_CONSULTAR_CLIENTE"
ORA-06550 line1, column 7
PL/SQL Statement ignored
--PL*SQL
CREATE OR REPLACE PACKAGE pkg_cliente IS
TYPE tCursor IS REF CURSOR;
PROCEDURE prc_consultar_cliente (
pCodigoCliente IN VARCHAR2,
pNombreCliente IN VARCHAR2,
cDatosCliente OUT tCursor,
pCodRetorno OUT VARCHAR2,
pMsjRetorno OUT VARCHAR2
END pkg_cliente;
PROCEDURE prc_consultar_cliente (
pCodigoCliente IN VARCHAR2,
pNombreCliente IN VARCHAR2,
cDatosCliente OUT tCursor,
pCodRetorno OUT VARCHAR2,
pMsjRetorno OUT VARCHAR2
IS
exDatosInsuficientes EXCEPTION;
lnRegDevueltos NUMBER;
BEGIN
IF TRIM(pCodigoCliente) IS NULL THEN
RAISE exDatosInsuficientes;
END IF;
pMsjRetorno := 'Error Consultar CLIENTES ';
OPEN cDatosCliente FOR
SELECT * FROM CLIENTE
WHERE CODIGO_CLIENTE = pCodigoCliente;
lnRegDevueltos := SQL%ROWCOUNT;
pCodRetorno := '00000000';
pMsjRetorno := 'Transaccion Exitosa .. Reg.Devueltos ' || lnRegDevueltos;
EXCEPTION
WHEN exDatosInsuficientes THEN
pCodRetorno := '00001400';
pMsjRetorno := 'Uno de los campos de entrada son Nulos o ceros';
WHEN OTHERS THEN
pCodRetorno := SQLCODE;
pMsjRetorno := pMsjRetorno || ' ' || substr(SQLERRM,1,50);
END prc_consultar_cliente;
--VB. NET
Public Function consultarClientes() As DataSet
Dim strSql As String = "pkg_cliente.prc_consultar_cliente"
Dim cCon As New OracleConnection(connectionString)
Dim cMst As New OracleDataAdapter
Dim dst As New DataSet
cCon.Open()
cMst.SelectCommand = New OracleCommand(strSql, cCon)
cMst.SelectCommand.CommandType = CommandType.StoredProcedure
cMst.SelectCommand.Parameters.Add("pCodigoCliente", OracleType.VarChar).Value = "1111"
cMst.SelectCommand.Parameters.Add("pNombreCliente", OracleType.VarChar).Direction = "1"
cMst.SelectCommand.Parameters.Add("cDatosCliente", OracleType.Cursor).Direction = ParameterDirection.Output
cMst.SelectCommand.Parameters.Add("pCodRetorno", OracleType.VarChar, 100).Direction = ParameterDirection.Output
cMst.SelectCommand.Parameters.Add("pMsjRetorno", OracleType.VarChar, 100).Direction = ParameterDirection.Output
cMst.Fill(dst)
cCon.Close()
consultarClientes = dst
End Function -
PLS-00306: wrong number or types of arguments in call to 'myStoredProc'
I don't understand why I get the below error when I run my stored proc like this (here is the signature of my stored proc
PROCEDURE myStoredProc(thisCursor OUT MyRefCur);
exec myStoredProc
Error starting at line 1 in command:
exec myStoredProc
Error report:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'myStoredProc'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:Hi,
Suzie wrote:
I don't understand why I get the below error when I run my stored proc like this (here is the signature of my stored proc
PROCEDURE myStoredProc(thisCursor OUT MyRefCur);So the procedure requires 1 argument.
exec myStoredProcand you're calling it with 0 arguments. That's the wrong number. Call the procedure with 1 arguement:
VARIABLE c REFCURSOR
EXEC myStoredProc (:c);
Maybe you are looking for
-
Updating data in Master data Attribute in BI 7.0
Hi All I am using Bi 7.0. While doing data load for the attributes of an infoObject, my Monitor shows the correct information (i.e. 2 Records transferred and 1 record added, Which should ideally happen based on the conditions in the routines wherein
-
I cannot print to postscript or print at all in Illustrator CS4.
Using CS4 Illustrator and I cannot print a 388 MB file. Computer freezes or sometimes the program crashes all together. Can anyone tell me how to fix this issue?
-
How do I get the the indicator light to work with Voice Mail
I recently switched to Digital Voice. I have a Panasonic Phone that has a light that indicates when I have Voice mail. The light is NOT working when I get voice mail, however I get the stutter dial tone when I have voice mails. Is there something
-
Why do my Facebook friends transfer to my contacts
why do my Facebook friends transfer to my contacts
-
A.M.P.S. - problems seting up on solaris 10
help, I am trying to setup A.M.P.S. ... I have managed to configure this setup on a windows 2003 server (with headaches) but got it working. (eventually) ... i have joined this list in the hope that someone out there will be able to help. I am a Wind