PLS-00306 Reconciling Pl/Sql Package
Reconciling a package is always very painful and time-consuming.
I always get PLS-00306: wrong number or types of arguments in call to 'XYZ'.
Is this a normal behavior from OWB?
My workaround for this problem: Drop Package and Import the package.
Regards Franz
Yes, it is painful. When you deal with Package into OWB.
But, do you have any types of global definition with int your package which has been implemented in the form of transformations. It takes time other than that no problem even changing the parameters with out global definitions.
Similar Messages
-
Unable to generate the XML file through SQL script. getting error PLS-00306
I am fetching the data from cursor and generating the xml output I am getting the below error.
When I have checked the cursor query it is fetching the data in to single column.
Input truncated to 1 characters
Enter value for 7: EXEC FND_CONC_STAT.COLLECT;
DBMS_LOB.append (tmp_file, r.core_xml);
ERROR at line 95:
ORA-06550: line 95, column 7:
PLS-00306: wrong number or types of arguments in call to 'APPEND'
ORA-06550: line 95, column 7:
PL/SQL: Statement ignoredHi Alex,
thanks for the responce..
i have fixed the issue
i have used XMLAttributes to get the value
SELECT XMLELEMENT (
NAME "TranACK",
XMLAttributes ('1' as "TranNum",
(select distinct to_char(SYSDATE,'yyyy-mm-dd')
from DUAL) as "PrcDate"),
XMLFOREST (
a.PAYMENT_ID AS "PmtID"),
XMLFOREST (
a.ACK_TRANSACTION_RECEIVER AS "Name1"),
XMLFOREST (
to_char(a.VALUE_DATE,'yyyy-mm-dd') as "ValueDate" ),
XMLFOREST (
a.PAYMENT_AMOUNT AS "CurAmt"),
XMLFOREST (
a.CURRENCY_CODE AS "CurCode")
).getclobval ()
AS line_xml
FROM XXWAP_PAYMENT_LINE_TBL a
where a.PAYMENT_BATCH_ID=P_batch_id; -
Error PLS-00306 during calling PL/SQL function from Java
Hi all,
I am facing a problem during call of oracle PL/SQL function from java using CallableStatement.
I receive following error message.
java.sql.SQLException: ORA-06550: line 1, column 13:
PLS-00306: wrong number or types of arguments in call to 'EXPORT_HIST_ALARMS_FUNC'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
As per above error EXPORT_HIST_ALARMS_FUNC in oracle has this signature.
CREATE OR REPLACE FUNCTION EXPORT_HIST_ALARMS_FUNC(startDateTime VARCHAR2, endDateTime VARCHAR2, meType VARCHAR2) RETURN VARCHAR2 IS
END EXPORT_HIST_ALARMS_FUNC;
Above function I have called following way in java.
String sql = "begin ?:= EXPORT_HIST_ALARMS_FUNC(?, ?, ?); end;" ;
CallableStatement cStatement = null;
cStatement = connection.prepareCall(sql);
cStatement.registerOutParameter(1,Types.VARCHAR);
cStatement.setString(2,startDateTime);
cStatement.setString(3,endDateTime);
cStatement.setString(4,meType);
cStatement.execute();
msg = cStatement.getString(1);
Actually above function requires three input parameters and one return parameter.
During execution of above java code it throws SQLException and shows PLS-00306: wrong number or types of arguments in call to 'EXPORT_HIST_ALARMS_FUNC' error.
I have run this function directly from oracle with three parameters and run successfully and finally it returns string.
But I am unable to figure out why it doesn't run from above java code.
Please help regarding this.
Thanks.
Regards,
Shardul BankerTry this:
String sql = "begin ?:= EXPORT_HIST_ALARMS_FUNC(?, ?, ?); end;" ;
CallableStatement cStatement = null;
cStatement = connection.prepareCall(sql);
cStatement.registerOutParameter(1,Types.VARCHAR);
cStatement.setString(1,startDateTime);
cStatement.setString(2,endDateTime);
cStatement.setString(3,meType);
cStatement.execute();
msg = cStatement.getString(1);Regards,
Martijn Teigeler
Edited by: mTeigeler on Oct 13, 2007 10:22 AM -
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 -
Notification with user defined type results in PLS-00306: wrong number..
I created a user defined type TLogMessage:
CREATE OR REPLACE TYPE TLogMessage AS OBJECT
module VARCHAR2(4000),
severity NUMBER,
message VARCHAR2(4000)
I also created a multi-consumer queue using this type as payload.
My callback procedure in the package PK_SYST_LOGMESSAGE is defined as follows:
PROCEDURE DefaultLoggerCallback(
context RAW,
reginfo SYS.AQ$_REG_INFO,
descr SYS.AQ$_DESCRIPTOR,
payload RAW,
payload1 NUMBER
Finally, I registered the callback procedure as follows:
DBMS_AQADM.ADD_SUBSCRIBER(
queue_name => QUEUE_NAME,
subscriber => SYS.AQ$_AGENT(
name => 'default_logger',
address => NULL,
protocol => NULL
DBMS_AQ.REGISTER(
SYS.AQ$_REG_INFO_LIST(
SYS.AQ$_REG_INFO(
name => QUEUE_NAME || ':default_logger',
namespace => DBMS_AQ.NAMESPACE_AQ,
callback => 'plsql://MTDX.PK_SYST_LOGMESSAGE.DefaultLoggerCallback',
context => HEXTORAW('FF')
1
However, when I put a message in the queue using this procedure:
PROCEDURE LogMessage(
pModule VARCHAR2,
pSeverity NUMBER,
pMessage VARCHAR2
IS
vMessage TLogMessage;
vEnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
vMsgProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
vMessageHandle RAW(16);
BEGIN
vMessage := TLogMessage(module => pModule, severity => pSeverity, message => pMessage);
vEnqueueOptions.visibility := DBMS_AQ.IMMEDIATE;
vMsgProperties.correlation := pModule;
vMsgProperties.priority := -pSeverity;
-- Enqueue the message to all subscribers
DBMS_AQ.ENQUEUE(
queue_name => QUEUE_NAME,
enqueue_options => vEnqueueOptions,
message_properties => vMsgProperties,
payload => vMessage,
msgid => vMessageHandle
EXCEPTION
WHEN no_subscribers THEN
-- No subscribers on the queue; ignore
NULL;
END;
I can see the message in the queue, by querying the queue view. I can also see that Oracle tried to call my callback procedure, because in the trace file I see the following:
*** 2009-02-13 08:52:25.000
*** ACTION NAME:() 2009-02-13 08:52:24.984
*** MODULE NAME:() 2009-02-13 08:52:24.984
*** SERVICE NAME:(SYS$USERS) 2009-02-13 08:52:24.984
*** SESSION ID:(609.3387) 2009-02-13 08:52:24.984
Error in PLSQL notification of msgid:4F7962FEDD3B41FA8D9538F0B38FCDD1
Queue :"MTDX"."LOGMESSAGE_QUEUE"
Consumer Name :DEFAULT_LOGGER
PLSQL function :MTDX.PK_SYST_LOGMESSAGE.DefaultLoggerCallback
: Exception Occured, Error msg:
ORA-00604: Fout opgetreden bij recursief SQL-niveau 2.
ORA-06550: Regel 1, kolom 7:
PLS-00306: Onjuist aantal of type argumenten in aanroep naar 'DEFAULTLOGGERCALLBACK'..
ORA-06550: Regel 1, kolom 7:
PL/SQL: Statement ignored.
So.. how many parameters does Oracle expect, and of what type? Is there any way to find out? What is wrong with my code?Ok, found it... I had defined the last parameter of the callback procedure as 'payload1' (that is: 'payload-ONE') instead of 'payloadl' ('payload-ELL'). It all works like a charm now.
What a way to waste two whole days! -
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 -
Hi All,
I am totally new to PL/SQL development. Sorry for any stupid doubts.
I am trying to create a package which has a function with few in and one out parameters. When I try to compile the package, it throws me the following:
: PLS-00306: wrong number or types of arguments in call to 'GET_COMBINATION_ID'.
Below is my package:
TYPE SegmentArray is table of varchar2(200) INDEX BY BINARY_INTEGER;
create or replace
PACKAGE BODY xx_fnd_flex_ext_pkg
as
FUNCTION xx_get_comb_id(v_app_short_name IN VARCHAR2,
v_key_flex_code IN VARCHAR2,
v_structure_number IN NUMBER,
v_validation_date IN DATE,
v_n_segments IN NUMBER,
v_segments IN SegmentArray,
v_combination_id OUT NUMBER,
v_data_set IN NUMBER DEFAULT -1)
RETURN VARCHAR2 IS
temp BOOLEAN;
ccid NUMBER;
BEGIN
temp := apps.fnd_flex_ext.get_combination_id(application_short_name => v_app_short_name,
key_flex_code => v_key_flex_code,
structure_number => v_structure_number,
validation_date => v_validation_date,
n_segments => v_n_segments,
segments => v_segments,
combination_id => ccid,
data_set => v_data_set);
v_combination_id := ccid;
if(temp = true)
then return 'TRUE';
end if;
if(temp = false)
then return('FALSE');
end if;
END xx_get_comb_id;
END xx_fnd_flex_ext_pkg;
The apps.fnd.flex.get_combination_id and my custom function takes exactly the same parameters. But its failing somewhere. Pls help me on this.
Thanks,
Sreeram Kosaraju.Hi,
The segments parameter of apps.fnd_flex_ext.get_combination_id seems to have a user-defined dataype SegmentArray. That datatype is probably owned by the apps schema, perhaps defined in the fnd_flex_ext package.
Even if you find out how that datatype was defined, and you define one exactly like it in your own schema, they will be different datatypes.
Without seeing the documentation or code for apps.fnd_flex_ext, I can't tell what you should be doing.
It might be something as simple as using apps.fnd_flex_ext.SegmentArray (instead of your own SegmentArray) in all of your declarations. -
Hey All
I am using microsoft reporting services 2000, to develop a report. I am using a stored procedure to fetch data from the oracle DB and display on the report GUI.
Initially it was working when my signature was something like this:
PROCEDURE danger_cards (
startDate IN DATE,
endDate IN DATE,
serviceCenter IN VARCHAR2,
dangerCards OUT staging_reports.REFERENCE_CURSOR)
but when i changed the signature to :
PROCEDURE danger_cards (
startDate IN DATE,
endDate IN DATE,
serviceCenter IN VARCHAR2,
errorMessage OUT VARCHAR2,
dangerCards OUT staging_reports.REFERENCE_CURSOR)
it is giving this error:
Could not generate a list of fields for the query
Check the query syntax or click Refresh Fields on the query toolbar.
ORA-06550: Line 1, Column 7:
PLS-00306: wrong number or types of arguments in call to 'STAGING_REPORTS.DANGER_CARDS'
ORA-06550: Line 1, Column 7:
PL/SQL : Statement ignored
Since it was working before, and not now, i presume me adding the out field errorMessage in the signature as an OUT param is the reason.
Please let me know, what might be the reason for such kind of an error.
The body of the stored proc currently looks like this:
PACKAGE BODY "STAGING_REPORTS" AS
PROCEDURE danger_cards (
startDate IN DATE,
endDate IN DATE,
serviceCenter IN VARCHAR2,
errorMessage OUT VARCHAR2,
dangerCards OUT staging_reports.REFERENCE_CURSOR)
IS
dangerCard AD_REPORT_DANGER_CARDS_VW%ROWTYPE;
date_range EXCEPTION;
PRAGMA EXCEPTION_INIT(date_range, -20999);
BEGIN
errorMessage := '';
IF(startDate > endDate)
THEN
raise_application_error(-20999,'Please Specify An End Date Greater Or Equal To The Start Date');
END IF;
OPEN dangerCards
FOR
SELECT *
FROM AD_REPORT_DANGER_CARDS_VW
WHERE COMPLETION_DTE >= TO_CHAR(startDate,'YYYYMMDD')
AND
COMPLETION_DTE <= TO_CHAR(endDate,'YYYYMMDD')
AND
(SERVICE_AREA_GEO_CD = serviceCenter);
EXCEPTION
WHEN date_range THEN
errorMessage := SQLERRM;
END staging_reports_danger_cards;
END staging_reports;Hi,
If you have a look at the error message:PLS-00306: wrong number or types of arguments in call to 'STAGING_REPORTS.DANGER_CARDS'you'll notice that the error is when calling the procedure. You should check the whole package and other ones too for calls of the DANGER_CARDS procedure.
Just issue:SELECT NAME, TEXT
FROM DBA_SOURCE
WHERE UPPER(TEXT) LIKE '%DANGER_CARDS%';and sort the result in order to check against the proc definition. You can also paste this query output here, or the whole package code, in order for us to diagnose it more precisely.
Regards,
Yoann. -
Urgent : ADO / OraOLEDB gives random PLS-00306: wrong number or types of arguments
Hi people,
Using our production environment of Win2K AS, IIS 5.0 --> Win2K AS, COM+ / ADO, Oracle OLE DB 9i --> Solaris Oracle 9i we have a month of trace logs telling us that some calls to our PL/SQL package methods have the "PLS-00306: wrong number or types of arguments".
Closer examination of our development systems also revealed these errors that seem to occur fairly randomly. (No recompiles in the database [at least according to USER_OBJECT.TIMESTAMP] and no invalid packages or schema objects).
One call on a session will succeed (so there aren't any obvious syntax or data range boundary issues) and then with no obvious reason, a second call to the same package method will fail with the error message in the subject.
Anyone else seen this behaviour and know of a fix?
Thanks
Lachlan PittsHi,
The temp in the package and the temp in the anonymous block that calls the package are two different data types. They (coincidentally) have exactly the same number and type of elements, just as they (coincidentally) have exactly the same name, but they are still different.
Since the type is declare in the package head, you can reference it from oputside the package. You don't have to create a similar type in the calling block: just reference the package type, like this:
declare
v_out pkg_1.temp;
begin
pkg_1.DoSomething( 'a', 'b', v_out);
dbms_output.put_line(v_out.val1);
end; -
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 '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 'MULTISET_INTERSE
CREATE OR REPLACE PACKAGE pkg_mkt_hub_load_collection
AS
PROCEDURE sp_final_load_mkt_hub;
END pkg_mkt_hub_load_collection;
CREATE OR REPLACE PACKAGE BODY pkg_mkt_hub_load_collection
AS
c_default_limit CONSTANT PLS_INTEGER:=5000;
PROCEDURE sp_final_lvl_idx_mon_hub;
PROCEDURE sp_final_lvl_idx_mon_hub
AS
CURSOR cur_lvl_idx_mon IS
SELECT idxmap.ssia_index_code,idxstg.start_date,idxstg.currency,idxstg.level1,idxstg.type,
idxstg.return_month,idxstg.return_3months, idxstg.return_6months, idxstg.return_ytd, idxstg.return_1year,
idxstg.return_3years, idxstg.return_5years,idxstg.return_10years,idxstg.market_cap,
idxstg.mkt_file_id
FROM mkt_total_lvl_indx_mon_stg idxstg,
md_vendor_index_map idxmap
WHERE idxmap.source = idxstg.source
AND idxmap.base_currency = idxstg.currency
AND idxmap.return_type = idxstg.type
AND idxmap.mkt_index_id = idxstg.vendor_code
AND idxmap.monthly = 'Y'
AND idxmap.file_type = 'T';
TYPE cur_lvl_idx_tab is table of cur_lvl_idx_mon%ROWTYPE;
cur_lvl_idx_rec cur_lvl_idx_tab;
CURSOR cur_idx_mon_hub IS
SELECT idxhub.ssia_index_id,idxhub.effective_date,idxhub.currency,index_level,idxhub.type,
idxhub.return_month,idxhub.return_3months, idxhub.return_6months, idxhub.return_ytd, idxhub.return_1year,
idxhub.return_3years, idxhub.return_5years,idxhub.return_10years,idxhub.market_cap,
idxhub.mkt_file_id
FROM mkt_total_lvl_indx_mon_hub idxhub;
TYPE cur_idx_mon_tab IS TABLE OF cur_idx_mon_hub%ROWTYPE;
cur_idx_mon_rec cur_idx_mon_tab;
l_col_3 cur_idx_mon_tab;
BEGIN
OPEN cur_lvl_idx_mon;
LOOP
FETCH cur_lvl_idx_mon BULK COLLECT INTO cur_lvl_idx_rec LIMIT c_default_limit;
EXIT WHEN cur_lvl_idx_mon%NOTFOUND;
END LOOP;
OPEN cur_idx_mon_hub;
LOOP
FETCH cur_idx_mon_hub BULK COLLECT INTO cur_idx_mon_rec LIMIT c_default_limit;
EXIT WHEN cur_idx_mon_hub%NOTFOUND;
END LOOP;
l_col_3 := cur_lvl_idx_rec MULTISET INTERSECT cur_idx_mon_rec;
CLOSE cur_lvl_idx_mon;
CLOSE cur_idx_mon_hub;
END sp_final_lvl_idx_mon_hub;
PROCEDURE sp_final_load_mkt_hub
AS
BEGIN
NULL;
END sp_final_load_mkt_hub;
END pkg_mkt_hub_load_collection;
show error
error code
Code: [Select all] [Show/ hide]SQL> @pkg_mkt_hub_load_collection.sql
Package created.
Warning: Package Body created with compilation errors.
Errors for PACKAGE BODY PKG_MKT_HUB_LOAD_COLLECTION:
LINE/COL ERROR
57/4 PL/SQL: Statement ignored
PLS-00306: wrong number or types of arguments in call to 'MULTISET_INTERSECT_ALL'
SQL>
please give an idea about this errorDeclaration is already visible.
TYPE cur_lvl_idx_tab is table of cur_lvl_idx_mon%ROWTYPE;The MULTISET operator must be used on collections of the same TYPE. You are attempting to use it on two different TYPEs
Since PL/SQL records cannot be compared for equality (yet) MULTISET operations on collections of PL/SQL record are not supported. You are attempting to use the MULTISET operator on collections of PL/SQL record.
I believe this is possible with a collection of persistent object type with a MAP or ORDER method.
But then again why not just use INTERSECT in SQL? -
PLS-00306: wrong number or types of arguments in call to 'PROC_GET_CUSTOMER
i'm trying to pass multiple value to stored procedure and getting below error
CREATE OR REPLACE TYPE STRINGTABLE AS TABLE OF VARCHAR2(4000);
CREATE OR REPLACE
PACKAGE PKG_CUSTOMER AS
TYPE L_CURSOR IS REF CURSOR;
PROCEDURE PROC_GET_CUSTOMER( P_SEARCH in STRINGTABLE, SELECTALL OUT L_CURSOR);
END PKG_CUSTOMER ;
CREATE OR REPLACE
PACKAGE BODY PKG_CUSTOMER AS
PROCEDURE PROC_GET_CUSTOMER( P_SEARCH IN STRINGTABLE, SELECTALL OUT L_CURSOR) IS
BEGIN
OPEN SELECTALL FOR
SELECT PTNR_COUNTRY_CODE, COUNT(*) NOS FROM TAB_MHD_PARTNER
WHERE PTNR_COUNTRY_CODE in (SELECT * FROM TABLE (P_SEARCH))
GROUP BY PTNR_COUNTRY_CODE
END;
END PKG_CUSTOMER;
EXEC PKG_CUSTOMER.PROC_GET_CUSTOMER('GB','DE');
Error starting at line 30 in command:
EXEC PKG_CUSTOMER.PROC_GET_CUSTOMER('GB','DE')
Error report:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'PROC_GET_CUSTOMER'
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'PROC_GET_CUSTOMER'
ORA-06550: line 1, column 43:
PLS-00363: expression 'DE' cannot be used as an assignment target
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:Edited by: RamiahRAGU on Apr 15, 2012 11:08 AMThe way you are calling the packaged procedure is entirely wrong.
1. You have one IN parameter which is of table type, and you are trying to pass it as VARCHAR2.
2. You have an out parameter, and not passing it.
Moreover, what are you trying to achieve by this code? If you explain teh actual issue, we will be able to help.
You should call the procedure as below:
SQL> declare
2 lc_csr PKG_CUSTOMER.L_CURSOR;
3 begin
4 PKG_CUSTOMER.PROC_GET_CUSTOMER(STRINGTABLE('GB','DE'),lc_csr);
5 end;
6 /
PL/SQL procedure successfully completed.
Maybe you are looking for
-
How can I change a brush stroke to a pencil stroke after I've drawn it?
How can I change a brush stroke to a pencil stroke after I've drawn it? Is this possible?
-
WL10.3 Error occurred during initialization of VM
I have over 3G RAM, absolutlely nothing else running. Trying to run samples for WL10R3, and server starts up with this error below. I tried increasing the ms and mx settings...to no avail. Reinstalled BEA...nothing. Noone else has that issue. Compare
-
MBP & External monitor orientation
Hello All, I would like to use an external monitor with the MBP with a different orientation i.e. the MBP runs on landscape (default/normal), I would like the external monitor to have a Potrait orientation. I have done this with a couple of PC's, am
-
My music got deleted!!
MY SONGS ARE ALL GONE!!! i was updating my ipod with new songs and when itunes came up it asked me whether i wanted to update my ipod with songs that are in my library. i clicked ok (cuz im an idiot) and then it said updating ipod. when i disconected
-
Hi All, in PPOME mode if i set Key date as todays date 10.26.2009. and create an org unit which by defaukts take dtae as todays date. Now in details area in i chnage its date to say 01.01.2009 , system allows mne to do that. But say if i chnage now i