PLS 00306 evil type using DECODE


Hello

in the hope of finding a quick response and not look too stupid current...

I have a PL/SQL procedure, I built using a save to spend a required group of data to a package values, I also built.

Having eliminated all other errors, I finished with the error PLS 00306 wrong number or types of argument.

To locate the offending entry...

(1) I made a dummy copy of the procedure called (P1) and (R1) type of record in the package and that returns my driving procedure (P2).

(2) I progressed to comment on data from a cursor for selecting data in a table P2 (SQL1) spent (P1) as a (R2) record and the corresponding (1) record (P1)

(3) I enabled each pair of data until I found what column has generated the error.

There were two...

One is a field of NVARCHAR2 (F1) to enter in a NCLOB record item, SELECT

(I'm pretty confident how to get around this - I can't just use a TO_NCLOB on F1 I use a SQL with database connection)

The other is where I use a DECODE in SQL go to a NVARCHAR2 field (12) (F2)

SQL1 simplified line... DECODE(COL1,'VAL1','VAL2') F1

Here's the quesition *.

I'm guessing that Oracle sees this as a generic string and not a NVARCHAR2 data type

How can I change the SQL code to avoid the error?

Thanks for your time (and be gentle with me, please).

Elaine

In fact using TO_NCHAR seems to have fixed - must be the string to NVARHCAR2 he had problems with.

Thanks for posting... Elaine

Tags: Database

Similar Questions

  • 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
    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;
    Error: PLS-00306: wrong number or types of arguments in the call to 'SET '.
    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

  • 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:

    ScreenHunter_15 Nov. 27 09.35.jpg

    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.

  • 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 to 'UPDATE_ORDER_NUMBER_SEQUENCE '.

    Hi Please help me solve the error given by this procedure

    TEXT

    --------------------------------------------------------------------------------

    PROCEDURE UPDATE_ORDER_NUMBER_SEQUENCE)

    sequenceName IN VARCHAR2,

    Inc. in full)

    AS

    stmt VARCHAR2 (2000);

    number of l_n;

    Start

    BEGIN

    -change the increment to Inc.

    stmt: = 'ALTER SEQUENCE | sequenceName | ' INCREMENT ' |

    Inc.;

    TEXT

    --------------------------------------------------------------------------------

    dbms_output.put_line (' execution "' | stmt |) '''');

    EXECUTE IMMEDIATE stmt;

    -Read the following value

    stmt: = "SELECT" | sequenceName | '. DOUBLE NEXTVAL ';

    dbms_output.put_line (' execution "' | stmt |) '''');

    EXECUTE IMMEDIATE stmt in l_n;

    -change the increment of 1

    stmt: = 'ALTER SEQUENCE | sequenceName | ' INCREMENT OF 1';

    dbms_output.put_line (' execution "' | stmt |) '''');

    EXECUTE IMMEDIATE stmt;

    EXCEPTION

    TEXT

    --------------------------------------------------------------------------------

    While some OTHER THEN dbms_output.put_line (SQLERRM);

    END;

    end UPDATE_ORDER_NUMBER_SEQUENCE;

    following error please help me solve this error

    ERROR on line 1:

    ORA-06550: line 1, column 7:

    PLS-00306: wrong number or types of arguments in the call to

    'UPDATE_ORDER_NUMBER_SEQUENCE '.

    ORA-06550: line 1, column 7:

    PL/SQL: Statement ignored

    Well, the error message is pretty self-explanatory, isn't it? What you use

    to call this procedure actually raises this error.

    However, you have not posted the SQL that actually calls this procedure

    so please post that.

    That said, the whole procedure seems wrong - what business requirement is there for

    edit sequences? This isn't normally how they should be used.

  • 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.

  • 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+ *.
    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;
    /
    PACKAGE+ *.
    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;
    /
    Does anyone know what is the problem?

    Thank you
    Steve

    Hi, 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.

  • PLS-00306: wrong number or types of arguments in the call to 'PAYROLL_MAIN '.

    Hi all

    I created under the package to extract data from people. I call below package throug CP (parameter are form_date and to_date) but
    get the error as PLS-00306: wrong number or types of arguments in the call to 'PAYROLL_MAIN '.

    I called the main procedure: PER_PAYROLL_XIR_PKG. PAYROLL_MAIN (form_date, to_date)

    Please help me solve error below

    -PER_PAYROLL_XIR_PKG. PAYROLL_MAIN: =.


    CREATE OR REPLACE PACKAGE BODY APPS. "" PER_PAYROLL_XIR_PKG ".
    AS


    procedure payroll_main (in_from_date IN date, date of IN in_to_date out_err_msg OUT varchar2) is

    /

    Thank you

    Published by: 981527 on February 9, 2013 02:35

    Published by: 981527 on February 9, 2013 02:35

    Published by: 981527 on February 11, 2013 21:14

    Hello

    Your package procedure has 3 parameters (2, 1 output), but your appeal involves only 2 parameters

    I think it is always best to use the "named notation" to specify the values of the parameters, for example package.procedure (param1-online value1-value2 online param2, param3-online value3);

    In this way, you can be sure what values are what settings

    Clive

  • 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
    . . .
    
  • ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments

    Hi all
    Here is the error:
    ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments
    The following code generates the error:
    create or replace PROCEDURE AMENDNUMBER_UPDATE
    (
    SHIP_NUMBER IN VARCHAR2,
    AMEND_NO ON SYS_REFCURSOR)
    AS
    BEGIN
    UPDATE CSPS_SHIPMENT_INFO_TL
    SET AMENDMENT_NO =
    (SELECT AMENDMENT_NO + 1
    OF CSPS_SHIPMENT_INFO_TL
    WHERE SHIPMENT_NUMBER = SHIP_NUMBER
    )
    WHERE SHIPMENT_NUMBER = SHIP_NUMBER;

    AMEND_NO OPEN FOR SELECT AMENDMENT_NO FROM CSPS_SHIPMENT_INFO_TL WHERE SHIPMENT_NUMBER = SHIP_NUMBER;

    -VALIDATION;
    END AMENDNUMBER_UPDATE;

    now when I try to run the under statement I get the above error:
    exec amendnumber_update (ship_number);


    Please suggest how to manage...

    Hello

    TCSBPMUSER wrote:
    Hi all
    Here is the error:
    ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments

    It's one of these error messages that actually means what he says.

    The following code generates the error:
    create or replace PROCEDURE AMENDNUMBER_UPDATE
    (
    SHIP_NUMBER IN VARCHAR2,
    AMEND_NO ON SYS_REFCURSOR)
    AS...

    now when I try to run the under statement I get the above error:
    exec amendnumber_update (ship_number);

    The procedure requires 2 arguments.
    You try to call with only 1 argument. It's the wrong number of arguments.

    To call the procedure from SQL * Plus, you can do something like this:

    VARIABLE   rc  REFCURSOR
    
    EXEC  amendnumber_update (123, :rc);
    

    The 1st argument is an argument IN, so you can pass any kind of digital expression. (I used a literal above.)
    The 2nd argument is an OUT argument, so you must pass a variable. (I used a variable link above.)

  • ORA-06550: line 21, column 5: PLS-00306: wrong number or types of arguments

    Dear Sir

    can someone help what is the problem?
    I get the error message:
    ORA-06550: line 21, column 5: PLS-00306: wrong number or types of arguments in the call to 'STRONG_PASSWORD_VALIDATION' ORA-06550: line 21, column 5: PL/SQL: statement ignored

    code is:
    ---
    DECLARE
    l_username varchar2 (100);
    l_password varchar2 (100);
    l_old_password varchar2 (100);
    l_workspace_name varchar2 (30);
    l_min_length_err boolean;
    l_new_differs_by_err boolean;
    l_one_alpha_err boolean;
    l_one_numeric_err boolean;
    l_one_punctuation_err boolean;
    l_one_upper_err boolean;
    l_one_lower_err boolean;
    l_not_like_username_err boolean;
    l_not_like_workspace_name_err boolean;
    l_not_like_words_err boolean;
    BEGIN
    l_username: =: P29_CURR_USER;
    l_password: =: P29_NEW_PW;
    l_old_password: =: P29_PW;
    l_workspace_name: = APEX_UTIL. GET_DEFAULT_SCHEMA;
    APEX_UTIL. () STRONG_PASSWORD_VALIDATION
    p_username = > l_username,.
    p_password = > l_password,
    p_old_password = > l_old_password,
    p_workspace_name = > l_workspace_name,
    p_use_strong_rules = > false,
    p_min_length_err = > l_min_length_err,
    p_new_differs_by_err = > l_new_differs_by_err,
    p_one_alpha_err = > l_one_alpha_err,
    p_one_numeric_err = > l_one_numeric_err,
    p_one_punctuation_err = > l_one_punctuation_err,
    p_one_upper_err = > l_one_upper_err,
    p_one_lower_err = > l_one_lower_err,
    p_not_like_username_err = > l_not_like_username_err,
    p_not_like_workspace_name_err = > l_not_like_workspace_name_err,
    p_not_like_words_err = > l_not_like_words_err
    );

    IF l_min_length_err THEN
    return ('Kennwort ist zu kurz');
    END IF;

    IF l_new_differs_by_err THEN
    return ("' muss sich vom alten Kennwort unterscheiden Kennwort");
    END IF;

    IF l_one_alpha_err THEN
    return ('wenigstens einen letter included muss Kennwort');
    END IF;

    IF l_one_numeric_err THEN
    return ('wenigstens eine Ziffer included muss Kennwort');
    END IF;

    IF l_one_punctuation_err THEN
    return ('wenigstens ein Sonderzeichen included muss Kennwort');
    END IF;

    IF l_one_lower_err THEN
    return ('wenigstens einen Kleinbuchstaben included muss Kennwort');
    END IF;

    IF l_one_upper_err THEN
    return ('wenigstens einen Grossbuchstaben included muss Kennwort');
    END IF;

    IF l_not_like_username_err THEN
    return ('Kennwort darf nicht den included Nick');
    END IF;

    IF l_not_like_workspace_name_err THEN
    return ('Kennwort darf nicht den Namen-Workspace included');
    END IF;

    IF l_not_like_words_err THEN
    Return ("' contains unerlaubten term Kennwort") End Function
    END IF;
    Returns a null value.
    END;
    ---
    Any help is welcome.
    Kind regards
    Lorenz

    Look in your version of apex_util. Your code certainly doesn't look like using STRONG_PASSWORD_VALIDATION, which has very different parameters.

    My version (4.0) of STRONG_PASSWORD_CHECK has 16 parameters, your code has 15.

  • PLS-00306: wrong number or types of arguments in the call to 'proc1 '.

    Hi all

    I pass parameter values to .NET as below proc.

    PROCEDURE PROC1
    ( 
         in_report_parameter_id   IN      report_tasks.report_task_id%TYPE,
         result_site_name         OUT     SYS_REFCURSOR,
         result                   OUT     SYS_REFCURSOR
    )
    AS
    
              
      my_site_id sites.site_id%TYPE;       
     
      my_lane_numbers_string VARCHAR(100);
      
      
      my_site_name sites.short_name%TYPE;
         
       
        
    BEGIN
                 
      my_site_id := get_site_id(in_report_parameter_id);
      
      
      
      SELECT short_name
         INTO my_site_name
         FROM sites
         WHERE site_id = my_site_id;
      
         
            OPEN result_site_name FOR
          SELECT my_site_name site_name
            FROM sys.dual;
          
         
               OPEN result FOR       
              SELECT site_direction_id,
                      site_lane_id
                FROM site_lanes
                JOIN report_parameters 
                   ON site_lane_id = CAST(report_parameters.report_parameter_value AS NUMBER)
               WHERE site_id = my_site_id
                 AND report_parameters.report_parameter_id = in_report_parameter_id 
                 AND report_parameters.report_parameter_group = 'LANE'
                 AND report_parameters.report_parameter_name = 'LANE'
           ORDER BY site_direction_id ASC, site_lane_id ASC;
              --   FROM SYS.DUAL;   
           
    END PROC1;
    During execution, it throws me the following error
    PLS-00306: wrong number or types of arguments in call to 'proc1'
    How could I solve this problem?

    Thanks in advance.

    Kind regards
    Sollier

    Hello

    user10641405 wrote:
    ...
    If I use site.short_name%TYPE in OUTPUT parameter, how could I go to the .NET instead of results OPEN TO. ?

    Change the second argument:

    PROCEDURE PROC1
    (
         in_report_parameter_id   IN      report_tasks.report_task_id%TYPE,
         result_site_name         OUT     sites.short_name%TYPE,
         result                   OUT     SYS_REFCURSOR
    )
    AS ...
    

    and SELECT in IT:

      SELECT short_name
         INTO result_site_name
         FROM sites
         WHERE site_id = my_site_id;
    
  • 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:
    PLS-00306: wrong number or types of arguments in call to
             'CUR_DEPT'
    This is my code:
         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;
    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.

    Thank you!

    Published by: user10915730 on April 18, 2009 07:48

    Published by: user10915730 on April 18, 2009 07:48

    Hello

    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

  • Convert number to Varchar for printing the Type of table in a loop error: PLS-00306:

    Hello

    I am trying to print a number of the Table that I get from a ref cursor But cannot convert the number to Varchar to print. What I'm doing wrong here

    Thank you

    Ken

    OUT_REFCURSOR FETCH BULK COLLECT INTO theTBL_RCRD_ID ;

    So THAT (theTBL_RCRD_ID IS NOT NULL)

    LOOP

    strRCRDID: = TO_CHAR (onTBL_RCRD_ID (indx), "99999");    -This line throws error message

    dbms_output.put_line (strRCRDID);

    INDX: = indx + 1;

    END LOOP;

    • Error: PLS-00306: wrong number or types of arguments in the call to "TO_CHAR.

    Try this...

    strRCRDID: = TO_CHAR (outTBL_RCRD_ID (indx). RCRD_ID, "99999");

Maybe you are looking for

  • Do you have a dv9700? or something similar to this family? concerns...

    Hello I have some concerns on my new laptop.  I bought this laptop about 4 months in August.  Recently, it seems to be the warm-up everwhere.  Before she would get under hot but now the fan runs continuously until I can still hear it.  The fan seems

  • Z30 satellite will not be closed

    New laptop for my daughter will not entirely closed and seems to be stuck at the stage of closing.I tried pressing so that hold power button for 5 seconds. It seems to stop even if the power led on the touchpad still slowly flashes orange.When you pr

  • iPhone Mobile SE data problems

    I just bought an iPhone SE and wanted to disable cellular data for application specific i.e. Facebook and a weather app. But it only allows me to disable data for native iOS applications. Anyone know how I can disable data for other applications? Tha

  • Qosmio G30-126 (PQG32E) - very slow performance of HARD drive

    I have improved my Qosmio G30 126 at 4 GB of Ram, SSD 64 HDD as windows7 boot partition and 500 GB 7200 64cache HARD drive as drive HARD secondary but I have a very slow HARD drive performance when working in windows7, but when I work on a virtual ma

  • My TUTCH SCREEN NOT WORKING AND I need TO UNLOCK MY PHONE to DO SAVE WITHE I MGOE

    my screen does not and I need to open my home screen to make a backup to activate my phone for the company guarantee to repair this phone, so I need apple support to contact me to open it and my phone is I phone 6 more