Iterating through a collection of cursor type give PLS-00306: wrong number or types of arguments in the call to "PUT_LINE '.
I wrote the following anonymous block. He has a slider ""cur_total_tckt "who choose 6 columns." A nested table 'total_tckt_colcn' is declared of type ""cur_total_tckt "." In the dbms_output.put_line I want to print each item in my collection. It gives me the following error:
PLS-00306: wrong number or types of arguments in the call to "PUT_LINE '.
ORA-06550: line 29, column 2:
PL/SQL: Statement ignored
06550 00000 - "line %s, column % s:\n%s".
I want to print all 6 columns of an element for 366 these elements.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DECLARE
CURSOR cur_total_tckt
is
select t.ticket_id ticket_id, t.created_date created_date, t.created_by created_by, t.ticket_status ticket_status,
t.last_changed last_changed, h.created_date closed_date
from n01.cc_ticket_info t
inner join n01.cc_ticket_status_history h
on (t.ticket_id = h.ticket_id)
where t.last_changed >= '6/28/2012 17:28:59' and t.last_changed < (sysdate + interval '1' day);
type total_tckt_colcn
is
TABLE OF cur_total_tckt%rowtype;
total_tckt_col total_tckt_colcn;
total_coach_col total_tckt_colcn;
begin
total_tckt_col := total_tckt_colcn ();
total_coach_col := total_tckt_colcn ();
OPEN cur_total_tckt;
loop
fetch cur_total_tckt bulk collect into total_tckt_col limit 100;
dbms_output.put_line(total_tckt_col.last);
FOR i IN total_tckt_col.first..total_tckt_col.last
loop
-- dbms_output.put_line(total_tckt_col(i).ticket_id); -- this line works
dbms_output.put_line(total_tckt_col(i)); -- this line gives error
END LOOP;
exit
WHEN (cur_total_tckt%NOTFOUND);
END LOOP ;
CLOSE cur_total_tckt;
end;
making reference to an element differs from the reference to a field in the record that is part of the collection.
'dbms_output.put_line (total_tckt_col (i))' works if there is only a single element.
will not work if this element has subcomponents. in your case it has subcomponents as fields in a record.
Tags: Database
Similar Questions
-
PLS-00306: wrong number or types of arguments in the call to PUT_LINE
Hi all
I m new to the pl sql, when I run the below block I get errors.
kindly help me on this.
DECLARE
Siva ARRAY TYPE IS VARCHAR2 (100);
s siva;
Cur_i IS SELECT name FROM employee of CURSOR;
BEGIN
OPEN cur_i.
LOOP
SEEK cur_i s INTO;
EXIT WHEN cur_i % NOTFOUND;
DBMS_OUTPUT. Put_line (s);
END LOOP;
CLOSE Cur_i;
END;
I m getting the error below:
PLS-00597: expression' in the INTO list has the wrong type
PLS-00306: wrong number or types of arguments in the call to "PUT_LINE '.
Hello
I think that you are learning/exercises PL/SQL. See below the approach.
declare
siva type is table of the varchar2 (100);
s siva;
cursor cur_i is
Select first_name from employees;Start
Open cur_i;
loop
collect fetch cur_i in bulk
s;
When the output cur_i % notfound;
end loop;close cur_i;
-Printing values in the collection
because me s.first... loop of s.Last
dbms_output.put_line (s (i));
end loop;end;
Thank you
Suri
Post edited by: Suri
Simple loop removed and exit when collecting conditions because we fetch all the records of a sudden in the collection using the bulk.
-
column of username in dba_users PLS-00306: wrong number or types of arguments
Can someone please help me understand what is happening here? I need to insert items in schemas a little, but I can't get the column username to work for some reason any.
SQL > start
2 for v_username looping (select username from dba_users)
3 dbms_output.put_line (v_username);
4 end of loop;
5 end;
6.
dbms_output.put_line (v_username);
*
ERROR at line 3:
ORA-06550: line 3, column 1:
PLS-00306: wrong number or types of arguments in the call to "PUT_LINE '.
ORA-06550: line 3, column 1:
PL/SQL: Statement ignored
SQL > dba_users desc;
Name Null? Type
----------------------------------------- -------- ----------------------------
USER NAME NOT NULL VARCHAR2 (30)
USER_ID NOT NULL NUMBER
PASSWORD VARCHAR2 (30)
ACCOUNT_STATUS NOT NULL VARCHAR2 (32)
DATE OF LOCK_DATE
EXPIRY_DATE DATE
USER_USERS NOT NULL VARCHAR2 (30)
TEMPORARY_TABLESPACE NOT NULL VARCHAR2 (30)
CREATION DATE NOT NULL
PROFILE NON-NULL VARCHAR2 (30)
INITIAL_RSRC_CONSUMER_GROUP VARCHAR2 (30)
EXTERNAL_NAME VARCHAR2 (4000)
SQL >>
for v_username in a loop (select username from dba_users)
>
v_username in the loop is a CURSOR that represents the WHOLE folder.If you need to access the columns in the record using the dot notation. It works for me.
declare v_username varchar2(30); begin for v_username in (select username from dba_users) loop dbms_output.put_line(v_username.username); end loop; end; SCOTT . . .
-
PLS-00306: wrong number or types of arguments in call to... my cursor
Hi all
I try to use the same cursor for an explicit cursor and a cursor for loop. Can I do this? I get the error:
This is my code:PLS-00306: wrong number or types of arguments in call to 'CUR_DEPT'
Oh also if someone could tell me how to format DBMS_OUTPUT. Put_line so that I could dash in some lines that would be great. Did not work as I did.PROCEDURE LIST_DEPT_PRODUCTS (dept_name VARCHAR2) IS i_1 CHAR(1):=' '; i_2 CHAR(2):=' '; i_3 CHAR(3):=' '; i_4 CHAR(4):=' '; lv_deptid bb_department.idDepartment%TYPE; lv_deptname bb_department.DeptName%TYPE; lv_deptdesc bb_department.DeptDesc%TYPE; CURSOR cur_dept (dept VARCHAR2) IS SELECT d.DeptName, d.DeptDesc, d.idDepartment INTO lv_deptname, lv_deptdesc, lv_deptid FROM bb_department d WHERE DeptName = dept ORDER BY DeptName; CURSOR cur_prod IS SELECT p.ProductName, p.Description, p.Price, p.SaleStart, p.SaleEnd FROM bb_product p WHERE idDepartment = lv_deptid ORDER BY ProductName; BEGIN IF (dept_name = 'Coffee') THEN OPEN cur_dept(dept_name); LOOP FETCH cur_dept INTO lv_deptname, lv_deptdesc, lv_deptid; EXIT WHEN cur_dept%notfound; DBMS_OUTPUT.PUT_LINE(lv_deptname); DBMS_OUTPUT.PUT_LINE(i_1||lv_deptdesc); DBMS_OUTPUT.PUT_LINE(chr(1)); FOR l_prod in cur_prod LOOP DBMS_OUTPUT.PUT_LINE(i_2||l_prod.ProductName); DBMS_OUTPUT.PUT_LINE(i_3||SUBSTR(l_prod.Description,1,70)); DBMS_OUTPUT.PUT_LINE(i_4||'Price - '||FORMAT_DOLLARS(l_prod.Price)); IF l_prod.SaleStart IS NOT NULL THEN DBMS_OUTPUT.PUT_LINE(i_4||'Sale runs from '||FORMAT_DATE(l_prod.SaleStart)||' until '||FORMAT_DATE(l_prod.SaleEnd)); END IF; DBMS_OUTPUT.PUT_LINE(chr(1)); END LOOP; END LOOP; CLOSE cur_dept; ELSIF (dept_name = 'All') THEN FOR l_dept in cur_dept LOOP DBMS_OUTPUT.PUT_LINE(l_dept.DeptName); DBMS_OUTPUT.PUT_LINE(i_1||l_dept.DeptDesc); DBMS_OUTPUT.PUT_LINE(chr(1)); FOR l_prod in cur_prod LOOP DBMS_OUTPUT.PUT_LINE(i_2||l_prod.ProductName); DBMS_OUTPUT.PUT_LINE(i_3||SUBSTR(l_prod.Description,1,70)); DBMS_OUTPUT.PUT_LINE(i_4||'Price - '||FORMAT_DOLLARS(l_prod.Price)); IF l_prod.SaleStart IS NOT NULL THEN DBMS_OUTPUT.PUT_LINE(i_4||'Sale runs from '||FORMAT_DATE(l_prod.SaleStart)||' until '||FORMAT_DATE(l_prod.SaleEnd)); END IF; DBMS_OUTPUT.PUT_LINE(chr(1)); END LOOP; END LOOP; CLOSE cur_dept; ELSE DBMS_OUTPUT.PUT_LINE('No department found with name '||dept_name); END IF; END LIST_DEPT_PRODUCTS;
Thank you!
Published by: user10915730 on April 18, 2009 07:48
Published by: user10915730 on April 18, 2009 07:48Hello
In the ELSIF clause, you must open the cursor. For dash maybe you can use:
Connected to Oracle Database 10g Express Edition Release 10.2.0.1.0 Connected as hr SQL> SQL> SET SERVEROUTPUT ON SQL> DECLARE 2 3 FUNCTION fnc_indent(nTimes IN NUMBER) RETURN VARCHAR2 IS 4 v_result VARCHAR2(4000); 5 c_tab CONSTANT VARCHAR2(1) := chr(9); 6 BEGIN 7 FOR i IN 1 .. nTimes LOOP 8 v_result := v_result || c_tab; 9 END LOOP; 10 RETURN v_result; 11 END fnc_indent; 12 13 BEGIN 14 DBMS_OUTPUT.put_line(fnc_indent(1) || 'hello'); 15 DBMS_OUTPUT.put_line(fnc_indent(2) || 'hello'); 16 DBMS_OUTPUT.put_line(fnc_indent(3) || 'hello'); 17 END; 18 / hello hello hello PL/SQL procedure successfully completed SQL>
Kind regards
-
ORA-06550, PLS-00306: wrong number or types of arguments in the call to ' |'
Hi all
Please help me about this error, if I comment the threshold (in the color of the thickness)
ERROR on line 19:
ORA-06550: line 19, column 25:
PLS-00306: wrong number or types of arguments in the call to ' |'
ORA-06550: line 19, column 3:
PL/SQL: Statement ignored
DECLARE
TYPE nametable IS TABLE OF CHAR(10) INDEX BY BINARY_INTEGER;
vname NAMETABLE
CURSOR cf
IS
SELECT ename
FROM emp;
i NUMBER;
START
OPEN cf;
i := 1;
LOOP
FETCH cf INTO Vname (i);
EXIT WHEN cf%NOTFOUND;
i := i + 1;
END LOOP;
CLOSE cf;
dbms_output. Put_line ('Name is ' || VNAME );
FOR n IN 1.. VNAME . County LOOP
dbms_output. Put_line ('Name is ' || VNAME (n));
END LOOP;
END ;
Thank you
VNAME is an associative array. You can not use in DBMS_OUTPUT. Put_line as such. You need to loop through what you did in the code after the DBMS_OUTPUT and print each element of the array individually.
-
PLS-00306: wrong number or types of arguments in the call
Hello
I get this error when I run the script to test below:
< font color = "red" >
PLS-00306: wrong number or types of arguments in the call to 'SPLIT_AMOUNT '.
< / make >
This script is to test that the package below that I wrote. It seems to use the same 9 parameters of the same type:
TEST SCRIPT+ *.
PACKAGE+ *.declare TYPE g_table_number IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; p_customer_trx_ids g_table_number; p_total_amount_to_apply NUMBER := 10; p_total_amount_to_adjust NUMBER; -- p_result NUMBER; p_message VARCHAR2(200); p_payment_schedule_ids g_table_number; p_terms_sequence_numbers g_table_number; p_apply_amounts g_table_number; p_adjust_amounts g_table_number; begin p_customer_trx_ids(1) := 23613; p_customer_trx_ids(2) := 23614; hirap.split_amount ( p_customer_trx_ids ,p_total_amount_to_apply ,p_total_amount_to_adjust ,p_result ,p_message ,p_payment_schedule_ids ,p_terms_sequence_numbers ,p_apply_amounts ,p_adjust_amounts ); for i IN p_customer_trx_ids.FIRST .. p_customer_trx_ids.LAST LOOP dbms_output.put_line( i || ' p_customer_trx_id: ' || p_customer_trx_ids (i) || ' p_apply_amounts(i): ' || p_apply_amounts(i) || ' p_adjust_amounts: ' || p_adjust_amounts(i) ); END LOOP; end; /
Does anyone know what is the problem?CREATE OR REPLACE PACKAGE hirap AS TYPE g_table_number IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; PROCEDURE split_amount ( p_customer_trx_ids IN g_table_number ,p_total_amount_to_apply IN NUMBER ,p_total_amount_to_adjust IN NUMBER -- ,p_result OUT NUMBER ,p_message OUT VARCHAR2 ,p_payment_schedule_ids OUT g_table_number ,p_terms_sequence_numbers OUT g_table_number ,p_apply_amounts OUT g_table_number ,p_adjust_amounts OUT g_table_number ); END hirap; / CREATE OR REPLACE PACKAGE BODY hirap AS PROCEDURE split_amount ( p_customer_trx_ids IN g_table_number ,p_total_amount_to_apply IN NUMBER ,p_total_amount_to_adjust IN NUMBER -- ,p_result OUT NUMBER ,p_message OUT VARCHAR2 ,p_payment_schedule_ids OUT g_table_number ,p_terms_sequence_numbers OUT g_table_number ,p_apply_amounts OUT g_table_number ,p_adjust_amounts OUT g_table_number ) IS l_total_pay_sched_amount NUMBER; l_customer_trx_id NUMBER; l_amount_due_remainings g_table_number; CURSOR pay is SELECT p.payment_schedule_id ,p.terms_sequence_number ,p.amount_due_remaining FROM ar_payment_schedules_all p WHERE customer_trx_id = l_customer_trx_id AND p.terms_sequence_number = (SELECT min(p1.terms_sequence_number) FROM ar_payment_schedules_all p1 WHERE p1.customer_trx_id = l_customer_trx_id AND p1.status = 'OP' ); BEGIN p_result := 0; -- means OK -- read the payment schedule for each transaction and store values and totals: FOR i IN p_customer_trx_ids.FIRST .. p_customer_trx_ids.LAST LOOP l_customer_trx_id := p_customer_trx_ids(i); l_total_pay_sched_amount := 0; BEGIN OPEN pay; FETCH pay INTO p_payment_schedule_ids(i) ,p_terms_sequence_numbers(i) ,l_amount_due_remainings(i); CLOSE pay; l_total_pay_sched_amount := l_total_pay_sched_amount + l_amount_due_remainings(i); EXCEPTION WHEN NO_DATA_FOUND THEN fnd_file.put_line(fnd_file.LOG, 'Transaction does not exist for CUSTOMER_TRX_ID: ' || p_customer_trx_ids(i) ); RAISE; WHEN OTHERS THEN RAISE; END; END LOOP; -- save values for each payment schedule based on total FOR i IN p_customer_trx_ids.FIRST .. p_customer_trx_ids.LAST LOOP p_apply_amounts(i) := round ( l_amount_due_remainings(i) / l_total_pay_sched_amount * (p_total_amount_to_apply + p_total_amount_to_adjust) , 2 ); p_adjust_amounts(i) := l_amount_due_remainings(i) - p_apply_amounts(i); END LOOP; EXCEPTION WHEN OTHERS THEN p_result := 2; p_message := 'SQLCODE= ' || SQLCODE || ', SQLERRM = ' || SQLERRM; fnd_file.put_line( fnd_file.LOG , TO_CHAR(SYSDATE, 'HH24:MI:SS') || ' - ' || p_message ); END; -- END hirap; /
Thank you
SteveHi, Steve,.
The package contains a data type called g_table_number and also a procedure called split_amount.
That does not create another data type (different), also called g_table_number, outside of the package, any more that it prevents you from creating another procedure, also called split_amount, also. When you want to reference the data type or the procedure outside the package from the package, then you must prefix the name with the name of the package. You do this correctly when you reference the name of the procedure of your anonymous block:hirap.split_amount ( p_customer_trx_ids ...
Now you must do the same when you reference the data type:
declare p_customer_trx_ids hirap.g_table_number; p_total_amount_to_apply NUMBER := 10; p_total_amount_to_adjust NUMBER; -- p_result NUMBER; p_message VARCHAR2(200); p_payment_schedule_ids hirap.g_table_number; p_terms_sequence_numbers hirap.g_table_number; p_apply_amounts hirap.g_table_number; p_adjust_amounts hirap.g_table_number; begin ...
If you do not create another type of (different) data outside of the package, it will be the same as the type of data inside the packaging, even if the name is the same and they are defined in the same way. The package expects the arguments of the type hirap.g_table_number, so you have to give the hirap.g_table_number of type arguments.
-
a wrong number or types of arguments in the call to 'Procedure_Name '.
I call a procedure with the type of table but its me gives error
"ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in the call to 'VSKU_DETAIL_GRID '.
How can I fix?
String stmt = "start xxData_supplwrkbch_functions. VSKU_DETAIL_GRID(?,?,?,?,?,?,?,?); end; « ;
DBTransaction dbtxn = (DBTransaction) getTransaction ();
CallableStatement cs = dbtxn.createCallableStatement (stmt.toString (), 1);
int row_ptr = 0;
int col_ptr = 0;
error_code int;
String msg_erreur;
String [] [] outb_vsku_array = new String [300] [50];
Connection Conn = null;
ArrayDescriptor descriptor_width = null;
ArrayDescriptor descriptor_qty = null;
oracle.sql.ARRAY p_width_Arr = null;
oracle.sql.ARRAY p_qty_Arr = null;
ARRAY newWidthArray = null;
ARRAY newQtyArray = null;
try {}
Conn = getDBTransaction () .createCallableStatement ("select 1 from dual", 1) .getConnection ();
}
catch (SQLException e)
{
System.out.println ("error getting connection object");
}
Try
{
System.out.println ("creating descriptor");
descriptor_width = ArrayDescriptor.createDescriptor ("XXMSN_VSKU_WIDTH_TYPE", conn);
}
catch (System.Exception e)
{
System.out.println ("Descriptor ERROR-" + e.getMessage ());
}
Try
{
System.out.println ("creating descriptor");
descriptor_qty = ArrayDescriptor.createDescriptor ("XXMSN_VSKU_QTY_TYPE", conn);
}
catch (System.Exception e)
{
System.out.println ("Descriptor ERROR-" + e.getMessage ());
}
Try
{
p_width_Arr = new oracle.sql.ARRAY (descriptor_width, conn, p_width_ArrData);
newWidthArray = new ARRAY (descriptor_width, conn, p_width_Arr);
}
catch (System.Exception e)
{
System.out.println ("Array training ERROR-" + e.getMessage ());
}
Try
{
p_qty_Arr = new oracle.sql.ARRAY (descriptor_qty, conn, p_qty_ArrData);
newQtyArray = new ARRAY (descriptor_qty, conn, p_qty_Arr);
}
catch (System.Exception e)
{
System.out.println ("Array training ERROR-" + e.getMessage ());
}
cs.setString(1,p_ssku_id);
cs.setString(2,p_dim_2);
cs.setArray(3,p_width_Arr);
cs.setArray(4,p_qty_Arr);
cs.setInt(5,is_blanket);
cs.registerOutParameter(6,OracleTypes.CURSOR);
cs.registerOutParameter(7,OracleTypes.NUMERIC);
cs.registerOutParameter(8,OracleTypes.VARCHAR);
CS. Execute(); Error is here
Published by: Rahul Sharma 902 February 12, 2013 05:52I don't think and the error you get points in that direction too.
From my understanding, the OracleTypes.CURSOR is only used for ref Cursor.Timo
-
Please help solve the problem error: PLS-00306: wrong number or types of a
Hello
Please see my statement of types and the procedure. Object and the nested table that is declared at the schema level
I'm using the oracle version 11.2
Error: PLS-00306: wrong number or types of arguments in the call to 'SET '.CREATE OR REPLACE TYPE T_COPY_EVNT_DTL IS OBJECT ( eventId varchar2(100), eventDescription varchar2(100), promoMonthDescription varchar2(100), promoStartDate varchar2(100), promoEndDate varchar2(100), PROMOCOSTSTARTDATE varchar2(100) ); CREATE OR REPLACE TYPE T_EVENT_TABLE IS TABLE OF T_COPY_EVNT_DTL; create or replace PROCEDURE Pr_Event_Details_new(ip_xml CLOB, op_sections_xml OUT XMLTYPE) AS event_list t_copy_evnt_dtl; event_data_sec t_event_table := t_event_table(); CURSOR get_event_cur IS SELECT cast(collect(t_copy_evnt_dtl(evnt.event, evnt.event_desc, mth.promo_month_desc, TO_CHAR(evnt.start_date, 'DD/MM/YYYY'), TO_CHAR(evnt.end_date, 'DD/MM/YYYY'), TO_CHAR((evnt.start_date - 21), 'DD/MM/YYYY'))) as t_event_table) FROM RETEK_PROMO_EVENT_MST evnt INNER JOIN ..... WHERE ... ORDER BY evnt.event_desc, mth.promo_month_desc, dtl.promo_start_date, dtl.promo_end_date, dtl.promo_cost_start_date; type get_event_tab is table of get_event_cur%rowtype index by Binary_Integer; l_get_event_tab get_event_tab; BEGIN .... OPEN get_event_cur; fetch get_event_cur into event_data_sec; event_data_sec := set(event_data_sec); ... EXCEPTION --log_errors... Raise; END Pr_Event_Details_new;
Online: 117
Text: event_data_sec: = set (event_data_sec);
Error: PL/SQL: statement ignored
Online: 117
Text: event_data_sec: = set (event_data_sec);You will raise a wrong number or types of argument error, or an exception of PLS-00306, if you use the fixed operator with the collection of user-defined object types.
The collection must contain SQL scalar data types - single values without internal components...
Numeric values, on which you can perform arithmetic operations.
Alphanumeric values that represent individual or strings of characters, characters that you can manipulate.
Logical values, on which you can perform logical operations.
Dates and times, you can manipulate.
Time intervals, you can handle.Published by: stefan nebesnak on January 24, 2013 13:22
-
a wrong number or types of arguments in the call to 'DECLARE_SECTION80CCE '.
Declare
L_Warnings Boolean;
Date of L_Effective_Date;
Begin
L_Warnings: = false;
Pay_In_Tax_Declaration.Declare_Section80cce
(P_Assignment_Id = > '1212121212',)
P_Investment_Type = > "xxxxx."
P_Investment_Amount = > 123,
P_Effective_Date = > L_Effective_Date,
P_Element_Entry_Id = > 123,
p_warnings = > L_warnings);
End;
When executing the above code gives the error as an incorrect number or types of arguments in the call to 'DECLARE_SECTION80CCE '.
Please help someone.
Hello
Here is the description of the procedure:
PROCEDURE DECLARE_SECTION80CCE
Name of default input/output argument type?
------------------------------ ----------------------- ------ --------
P_ASSIGNMENT_ID NUMBER (10) IN
P_INVESTMENT_TYPE VARCHAR2 IN
NUMBER OF P_INVESTMENT_AMOUNT IN
P_EFFECTIVE_DATE DEFAULT DATE
P_ELEMENT_ENTRY_ID NUMBER (15) OUTSTANDING
VARCHAR2 P_WARNINGS OUT
(1) P_ASSIGNMENT_ID is that a number so feed a few steps a character (12121212 and not '12121212')
(2) P_WARNINGS is a VARCHAR2: variable 'L_Warnings' has been declared as a Boolean type; Please change to "VARCHAR2 (2000)" (for example) and not need to initialize it with "L_Warnings: = false;
Note This is on R12...
Kind regards
RajenPS: Please mark post as relatively useful/correct if this can help solve your problem. Thks.
-
Nested Tables: PLS-00306: wrong number or types of arguments
Hello
I created a package for updating of wages for a list of the empnos passed as parameter inside below is the package code:
CREATE or REPLACE PACKAGE method
AS
type emp_list IS TABLE OF emp.empno%type;
PROCEDURE add_sal (empnos emp_list);
END method;
/
CREATE or REPLACE PACKAGE body method
AS
PROCEDURE add_sal (empnos emp_list)
AS
BEGIN
ForAll I IN 1... empnos. Count
UPDATE emp SET sal = sal plus 100 WHERE empno is empnos (i);
END add_sal;
END method;
/
When I try to call the procedure to aid under block it works fine:
DECLARE
empnos emp_info.emp_list: = emp_info.emp_list (1111,1112);
BEGIN
emp_info.add_sal (empnos);
END;
/
But when I try to create the same as type I created in the package and try to pass to the procedure, the block fails with the error:
DECLARE
type emp_list IS TABLE OF emp.empno%type;
empnos emp_list;
BEGIN
empnos: = emp_list (1111,1112);
emp_info.add_sal (empnos);
END;
/
Error report-
ORA-06550: line 8, column 3:
PLS-00306: wrong number or types of arguments in the call to 'ADD_SAL '.
Can someone please help me understand why we see this error?
With the help of: Windows 8.1
Database Oracle 12 c Enterprise Edition Release 12.1.0.1.0 - 64 bit Production
PL/SQL Release 12.1.0.1.0 - Production
"CORE 12.1.0.1.0 Production."
AMT for 64-bit Windows: Version 12.1.0.1.0 - Production
NLSRTL Version 12.1.0.1.0 - Production
But when I try to create the same as type I created in the package and try to pass to the procedure, the block fails with the error:
No - it is NOT of the same type. One is the type of package and this news isn't the type of packet.
The fact that they have the same projection or a set of attributes is obsolete.
See the Oracle documentation
http://docs.Oracle.com/CD/B28359_01/AppDev.111/b28370/Collections.htm#BEIEADAA
You can assign values to all fields at the same time that if you assign a record to another record with the same data type. With fields that match exactly isn't enough, as shown in example 5-48.
Example 5-48 assigning all the fields of a record in a statement
DECLARE
-Two declarations of the same types.
TYPE DeptRec1 IS MADE
(dept_num NUMBER (2), dept_name VARCHAR2 (14));
TYPE DeptRec2 IS MADE
(dept_num NUMBER (2), dept_name VARCHAR2 (14));
dept1_info DeptRec1;
dept2_info DeptRec2;
dept3_info DeptRec2;
BEGIN
-Is not allowed; different types of data,
-even if the fields are the same.
-dept1_info: = dept2_info;
-This assignment is OK because the files have the same type.
dept2_info: = dept3_info;
END;
/ -
PLS-00306: wrong number or types of arguments in the call to ' |'
Hello
SQL> select * from v$version 2 / BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod PL/SQL Release 10.2.0.1.0 - Production CORE 10.2.0.1.0 Production TNS for 32-bit Windows: Version 10.2.0.1.0 - Production NLSRTL Version 10.2.0.1.0 - Production
Code
DECLARE TYPE SARR IS TABLE OF VARCHAR2(8); l_tempdate SARR; l_temptable VARCHAR2(30) := 'TBL_EDATE'; BEGIN EXECUTE IMMEDIATE ' SELECT FORMATDATE BULK COLLECT INTO ' || l_tempdate || ' FROM ' || l_temptable; END; /
Error
ERROR at line 6: ORA-06550: line 6, column 19: PLS-00306: wrong number or types of arguments in call to '||' ORA-06550: line 6, column 1: PL/SQL: Statement ignored
TABLE (it will create dynamically)
CREATE TABLE TBL_EDATE ( FORMATDATE VARCHAR2(8 BYTE), ORDERFORMATDATE NUMBER )
Insert Scripts
Insert into TBL_EDATE (FORMATDATE, ORDERFORMATDATE) Values ('H2-2012', 2); Insert into TBL_EDATE (FORMATDATE, ORDERFORMATDATE) Values ('H1-2012', 1);
Thank you
Well, you asked?
SQL > declare
2 type sarr is table of the varchar2 (8);
3 l_tempdate sarr;
4 l_temptable varchar2 (30);
5 str varchar2 (100);
6 start
7 - l_temptable: = get_temp_table_name (some arg); -logical, you must be knowing
8 l_temptable: = "TBL_EDATE"; -Suspected function returned this value
9 str: = ' Select format of ' | l_temptable | » ';
10 run immediately str bulk collect into l_tempdate;
11 dbms_output.put_line ('count' | l_tempdate.) (Count);
12 end;
13.
County 2
PL/SQL procedure successfully completed.
-
a wrong number or types of arguments in the call to 'MOD '.
Dear all,
I'm getting
My code iswrong number or types of arguments in call to 'MOD' Function.
Help, please.SQL> ed Wrote file afiedt.buf 1 declare 2 cursor cur is select empno from test; 3 begin 4 for c in cur loop 5 if MOD(c,2)=0 then 6 dbms_output.put_line(I || 'Employee Number is even.'); 7 else 8 dbms_output.put_line(I ||' Employee Number is odd.'); 9 exit when cur%notfount; 10 end if; 11 end loop; 12* end; SQL> / if MOD(c,2)=0 then * ERROR at line 5: ORA-06550: line 5, column 4: PLS-00306: wrong number or types of arguments in call to 'MOD' ORA-06550: line 5, column 1: PL/SQL: Statement ignored
Use this
declare cursor cur is select empno from test; begin for c in cur loop if MOD(c.empno,2)=0 then dbms_output.put_line(c.empno || 'Employee Number is even.'); else dbms_output.put_line(c.empno ||' Employee Number is odd.'); exit when cur%notfount; end if; end loop; end;
use of the C Index (in this case) was not valid. I was not defined in the code, so would have raised another mistake once this has been resolved. Please try above. It should work.
Another best way to do, that is:
Avoid RBAR and PL/SQL.select empno || ' Employee Number is ' || decode(mod(empno, 2), 0, 'even.', 'odd.') stmt from test;
Published by: Jen K on October 1, 2012 11:28
-
A wrong number or types of arguments in the call to stored procedure
Hi all...
I'm missing something simple here, but I don't see what it is.
I have looked around and cannot know what the problem is.
Calling a stored procedure in Oracle 11g of Java 6.
Here is my code:
Here are my stored procedure:CallableStatement proc = null; proc = conn.prepareCall("{ call storedProc(?, ?, ?, ?, ?) }"); proc.setString("p_header", "8YR6TG"); proc.setString("p_optype", "A"); proc.registerOutParameter("p_headerCursor", OracleTypes.CURSOR); proc.registerOutParameter("p_detailCursor", OracleTypes.CURSOR); proc.registerOutParameter("p_status", OracleTypes.VARCHAR); proc.execute();
Here's the exception I get:PROCEDURE storedProc ( p_header IN VARCHAR2, p_optype IN VARCHAR2, p_headerCursor OUT R_CURSOR, p_detailCursor OUT R_CURSOR, p_status OUT VARCHAR)
Can you see what I'm doing wrong here?java.sql.SQLException: ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'storedProc' ORA-06550: line 1, column 7: PL/SQL: Statement ignored at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:626) at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:181) at oracle.jdbc.driver.T4CCallableStatement.execute_for_rows(T4CCallableStatement.java:870) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1081) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2905) at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:2996) at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4120)
Thanks in advance for your comments!
Published by: Brady on February 16, 2012 13:02try to use digital indexes instead of parameter names.
-
ApexExport 06550 PLS-00306: wrong number or types of arguments
My work of ApexExort was running great until about a month and I can't pinpoint the problem. If I run it in production, I get the following error. However if I run it on my localhost even exact script works very well.
Exception in thread "main" java.sql.SQLException: ORA-06550: line 2, column 12:
PLS-00306: wrong number or types of arguments in the call to 'EXPORT_APPLICATION_TO_CLOB '.
ORA-06550: line 2, column 5:
Set ORACLE_HOME=C:\Oracle\product\11.2.0\dbhome_1
set CLASSPATH = % CLASSPATH statement; \;%O RACLE_HOME%\jdbc\lib\ojdbc5.jar;%apexExportJavaDir%
set PATH = % PATH %; \;%O RACLE_HOME%\Bin
JAVAHOME value = C:\Program Files\Java\jdk1.8.0_45
Set startRunLocation = \\mgasan2\hdrive\ATS_Working\Scott_Working\PROD_SCRIPTS\APEX_APP_BKUP
CD C:\apex_4.2\utilities
All applications to export REM
Java oracle.apex.APEXExport - db %oracleHost%:%oraclePort%/%OracleServiceName%-utilisateur % oracleUser %-% oracleSystemPass %-forum password
< gphmh >
Thanks for your suggestion of Kiran, but I understood what my problem was. The APEX version in our database is older: 4.1.1.00.23 and I have been using a version 4.2 utilities apex when I should have used the C:\apex_4.1.1_en\apex\utilities
CD C:\apex_4.2\utilities
C:\apex_4.1.1_en\apex\utilities
For the record, here's what worked for me...
Set apexExportJavaDir=C:\apex_4.1.1_en\apex\utilities
Set apexHtmlFileName = apex_info.html
BackupLocation = c:\PROD_SCRIPTS\APEX_APP_BKUP\OUTPUT\TEST set
Set ORACLE_HOME=C:\Oracle\product\11.2.0\dbhome_1
set CLASSPATH = % CLASSPATH statement; \;%O RACLE_HOME%\jdbc\lib\ojdbc5.jar;%apexExportJavaDir%
set PATH = % PATH %; \; C:\Program Files (x 86) \Java\jre7\bin
Set startRunLocation = c:\PROD_SCRIPTS\APEX_APP_BKUP
FIXED % apexExportJavaDir %
Java oracle.apex.APEXExport - db %oracleHost%:1521/%OracleServiceName%-utilisateur % oracleUser %-% oracleSystemPass %-forum password
-
Can't get the procedure to update - PLS - 00306:Wrong number or types of arguments
I'm in a situation where I think that despite the correct number of parameters by the way my local procedure (which has been "forward declarations" in addition to logical writing for her; I use all this in a package) fails to compile in SQL * faster due to the error PLS - 00306:Wrong number or types of arguments in the call to P_SENDMAIL.
I'm passing 5 parameters in the area of forward declarations and also in the logic/header inside in addition to calling the procedure in the package. Can one of you help mewith this and tell me where exactly the error might be. Here is the code:
[code]
-Local variable
CRLF VARCHAR2 (2) CONSTANT: = CHR (13) | CHR (10);
-- --------------------------------------------------------------------------------
-FORWARD DECLARATIONS
-- -----------------------------------------------------------------------------
PROCEDURE p_sendmail (p_sender_email IN VARCHAR2,
P_FROM IN VARCHAR2,
p_to IN VARCHAR2,
msg_subject IN VARCHAR2 DEFAULT NULL,
p_msg_body IN LONG DEFAULT NULL);
[/ code]
The procedure itself:
[code]
PROCEDURE p_sendmail (p_sender_email IN VARCHAR2,
P_FROM IN VARCHAR2,
p_to IN VARCHAR2,
msg_subject IN VARCHAR2 DEFAULT NULL,
p_msg_body IN LONG DEFAULT NULL) is
LONG v_to_list;
LONG v_cc_list;
LONG v_bcc_list;
T_DATE VARCHAR2 (255) DEFAULT TO_CHAR(SYSDATE, 'DD MON YYYY HH24:MI:SS PM');
g_mail_conn UTL_SMTP. CONNECTION;
SMTP_HOST CONSTANT VARCHAR2 (256): ='smtp - abc.defg.ca';
SMTP_PORT CONSTANT PLS_INTEGER: = 25;
BEGIN
g_mail_conn: = UTL_SMTP. OPEN_CONNECTION (SMTP_HOST, SMTP_PORT);
UTL_SMTP. HELO (g_mail_conn, SMTP_HOST);
UTL_SMTP.mail (g_mail_conn, p_sender_email);
UTL_SMTP. RCPT (g_mail_conn, p_to);
UTL_SMTP.open_data (g_mail_conn);
UTL_SMTP.write_data (g_mail_conn, "|) CRLF);
UTL_SMTP.write_data (g_mail_conn, p_msg_body);
UTL_SMTP.close_data (g_mail_conn);
UTL_SMTP. Quit (g_mail_conn);
EXCEPTION
WHEN utl_smtp.transient_error THEN
Dbms_output.put_line ('TransientError: invalid operation in the service may not be available.) ") ;
WHEN utl_smtp.permanent_error THEN
Dbms_output.put_line (' permanent error: the entered email is invalid or recepients mailbox is full.) ») ;
WHILE others THEN
Dbms_output.put_line ('Unable to send an email' |') '|| SQLERRM);
END p_sendmail;
[/ code]
Now by calling the procedure to send an email:
[code]
p_sendmail (p_sender_email = > ' [email protected]'-, send an E-mail to the donor )
p_from = > ' ADS < [email protected] > ',
p_to = > v_store_email_address,
p_msg_subject = > 'anonymous user ',.
p_msg_body = > 'thank you ' |
CRLF.
"Email confirms that we have received your promise |
CRLF.
CRLF.
' Name: '. v_full_name |
CRLF.
' Temporary ID: ' | v_azbwccp_id |
CRLF.
"Reference number: ' |" MTID |
CRLF.
"Amount: ' | '. TO_NUMBER (campaign_desg_amt1) |
CRLF.
"Campaign: ' | '. campaign |
CRLF.
' Description: ' | '. adbdesg_rec.adbdesg_name |
CRLF.
' Type: ' | atvpldg_rec.atvpldg_desc |
CRLF.
' Duration: ' | '. atvpdur_rec.atvpdur_desc |
CRLF.
"Frequency: ' | '. atvfreq_rec.atvfreq_desc |
CRLF.
"Start date: ' | '. bill_date2 |
CRLF.
CRLF.
'Your commitment is processed.' |
CRLF.
"At the same time, if you want to change this transaction, please contact us.
CRLF.
CRLF.
"Thank you for your support." |
CRLF.
CRLF.
CRLF.
CRLF.
' * This is an automated message system. Please, do not respond to this email. *** ') ;
[/ code]
I've also attached a screenshot of the error message below:
Please help me if you can. I just can't understand the question.
Thanks in advance
Sandeep
In the header of the procedure, I spent my parameter as msg_subject and during the call, he was p_msg_subject. The minute that I corrected the error, I was able to correctly compile the whole package body.
The question can be now closed.
Maybe you are looking for
-
Tree genealogy .html file with preformatted text appears correctly in high office Firefox but not in the version of the tablet. Misalignment occurs.
-
Well my Toshiba Satellite A205-S5814 laptop was very slow and I was getting very frustrated with it, so I decided pop in the CD "Toshiba Applications/Drvers" perhaps to restore my laptop to factory settings and run perfect once again. As I was doing
-
My hotmail account is playing up - suggestions pls for the following scenario. I try to send an email I get a message at the top of the screen actually say that Hotmail cannot process and suggesting I check my internet connection. I check the conne
-
HP Photosmart 8750: Deteriorated HP Photosmart 8750 support?
I use a HP Photosmart 8750 to print both color and black & white photographs. By various sources, including HP (for example, http://www.letsgodigital.org/en/news/articles/story_3703.html) the best collection of ink to this end is 97, 101 and 102, wh
-
Impossible to uninstall a free trial version of nero
I'm unable to remove or uninstall a free trial version of nero 11. The trial has expired, but I cannot uninstall the program from my computer. After an hour of uninstall, I get a warning that the installation failed. Help!