Passing a parameter to the procedure of employment

Hello

I want to create a job whose action is a procedure with parameters. How to pass parameters to a procedure for a job?

The message does not help. Try the same thing in a SQL or SQL worksheet * more:

BEGIN

SYS. () DBMS_SCHEDULER.set_job_argument_value

job_name => ' 'owner '. "" no "'.

argument_position-online 1

argument_value => 'good');

END;

/

PS: same comment as I posted a few minutes there is a topic in this forum. I encourage you not to use double quotes to name objects, it often leads to problems and errors.

Tags: Database

Similar Questions

  • Pass a parameter to a procedure of inserting the order...?

    Hi all

    I have a requirement where I need to pass the input parameter of the procedure for the insert inside the procedure command...

    My procedure continues like that...

    PROCEDURE pmproc_1)

    A IN VARCHAR2,

    B IN VARCHAR2,

    C IN VARCHAR2

    )

    AS

    BEGIN

    INSERT INTO my_table

    (number , activity, fact )

    SELECT the number , activity, fact

    Of abcd_actv_tbl

    Activity WHERE =

    AND > = B

    AND number = C;

    COMMIT;

    NULL;

    END pmproc_1;

    My requirement is that I need to pass the input parameter C to a column in my table which is my_table

    so that it becomes...

    INSERT INTO my_table (number , activity, , (HERE I NEED to GET THE VALUE of 'C' ) )

    SELECT the number , activity, fact

    Of abcd_actv_tbl

    Activity WHERE =

    AND > = B

    AND number = C;

    Please let me know if I'm unclear...

    Thanks in advance...

    DEV

    Based on what you have provided, I would say that something as simple as:

    INSERT INTO my_table (number activity ,c_column )

    SELECT the number is, c

           Of abcd_actv_tbl

    Activity WHERE =

    AND > = B

    AND number = C;

  • How to assign values to the nested table and passes as a parameter for the procedure?

    How to assign values to the nested table and passes as a parameter for the procedure?

    Here are the object and its type

    create or replace type test_object1 as an object
    (
    val1 varchar2 (50).
    val2 varchar2 (50).
    VARCHAR2 (50) val3
    );


    create or replace type test_type1 is table of the test_object1;


    create or replace type test_object2 as an object
    (
    val1 varchar2 (50).
    val2 varchar2 (50).
    VARCHAR2 (50) val3
    );


    create or replace type test_type2 is table of the test_object2;


    GRANT ALL ON test_object1 to PUBLIC;


    GRANT ALL ON test_type1 to PUBLIC;


    GRANT ALL ON test_object2 to PUBLIC;


    GRANT ALL ON test_type2 to PUBLIC;

    Here is the table object type:

    create the table test_object_tpe
    (
    sl_num NUMBER,
    Description VARCHAR2 (100),
    main_val1 test_type1,
    main_val2 test_type2
    )


    NESTED TABLE main_val1 STORE AS tot1
    NESTED TABLE main_val2 STORE AS earlier2;


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

    Here is the procedure that inserts values into the nested table:

    PROCEDURE INSERT_TEST_DATA (sl_num in NUMBER,
    Description in VARCHAR2,
    p_main_val1 IN test_type1,
    p_main_val2 IN test_type2
    )
    IS
    BEGIN

    FOR rec in p_main_val1.first... p_main_val1. Last
    LOOP

    INSERT INTO xxdl.test_object_tpe
    (
    sl_num,
    Description,
    main_val1,
    main_val2
    )
    VALUES
    (
    sl_num
    description
    test_type1 (test_object1)
    p_main_val1 .val1 (CRE),
    p_main_val1 .val2 (CRE),
    p_main_val1 .val3 (rec)
    )
    )
    test_type2 (test_object2 (p_main_val2 .val1 (CRE),
    p_main_val2 .val2 (CRE),
    p_main_val2 .val3 (rec)
    )
    )

    );

    END LOOP;

    commit;

    END INSERT_TEST_DATA;

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

    Here are the block anonymoys what values attributed to the object type and pass values in the procedure:

    Set serveroutput on;

    declare

    p_sl_num NUMBER: = 1001;
    p_description VARCHAR2 (50): = 'Test Val1;

    inval1 test_type1: = test_type1();
    inval2 test_type2: = test_type2();

    Start


    inval1 (1) .val1: = "testx1";
    inval1 (1) .val2: = "testx2";
    inval1 (1) .val3: = "testx3";

    inval2 (1) .val1: = "testy1";
    inval2 (1) .val2: = "testy2";
    inval2 (1) .val3: = "testy3";

    CSI_PKG. INSERT_TEST_DATA (sl_num = > p_sl_num,)
    Description = > p_description,
    p_main_val1 = > inval1,
    p_main_val2 = > inval2
    );

    end;
    /
    Someone can correct me.

    Thank you
    Lavan

    Thanks for posting the DOF and the sample code but whenever you post provide your Oracle version 4-digit (result of SELECT * FROM V$ VERSION).
    >
    How to assign values to the nested table and passes as a parameter for the procedure?
    >
    Well you do almost everything bad that could be hurt.

    Here is the code that works to insert data into your table (the procedure is not even necessary).

    declare
    p_sl_num NUMBER := 1001;
    p_description VARCHAR2(50) := 'Testing Val1';
    inval1 test_type1 := test_type1();
    inval2 test_type2 := test_type2();
    begin
    inval1.extend();
    inval1(1) := test_object1('testx1', 'testx2', 'testx3');
    inval2.extend();
    inval2(1) := test_object2('testy1', 'testy2', 'testy3');
    
    INSERT INTO test_object_tpe
    (
    sl_num,
    description,
    main_val1,
    main_val2
    )
    VALUES
    (p_sl_num, p_description, inval1, inval2);
    commit;
    end;
    /
    

    See example 5-15 making reference to an element of nested Table Chapter 5 using PL/SQL collections and records in the PL/SQL doc
    http://docs.Oracle.com/CD/B28359_01/AppDev.111/b28370/Collections.htm#CJABEBEA

    1. you don't even have the procedure because it is a simple INSERTION in the table you can do directly (see my above code)

    inval1(1).val1 := 'testx1';
    

    Since you have not yet created all the elements, there is no element 1 "inval1". You need EXTEND the collection to add an element

    inval1.extend();
    

    And then, there is an empty element, but "inval1" is a container for objects of type 'test_object1' not for scalars as "val1", "val2", and "val3".
    If you can not do

    inval1(1).val1 := 'testx1';
    

    You must create an instance of 'test_object1 '.

    inval1(1) := test_object1('testx1', 'testx2', 'testx3');
    

    And so on for the other collection

    You don't need the procedure (as my code example shows), but once you fill in the variables correctly it will work.

  • What is INSIDE and OUTSIDE in parameter of the procedure?

    Hello
    often IN, OUT and IN OUT are used with the parameter in the procedures and functions.
    This means pass by value, by reference, we did in programming c / c++?

    When you create a procedure or function, you can set parameters. There are three types of parameters that may be declared:

    1. - the parameter can be referenced by the procedure or function. The value of the parameter can not be overwritten by the procedure or function.
    2 - the parameter may not be referenced by the procedure or function, but the value of the parameter can be replaced by the procedure or function.
    3 AL '-the parameter can be referenced by the procedure or function and the value of the parameter can be replaced by the procedure or function.

  • Dynamically Open VI and him pass a parameter to the dynamically open VI

    I want to open a vi dynamically, at the same time I have to pass a parameter to the dynamically open VI. Is it possible to do?

    Thank you

    Chrystelle Roy

    Passionate about LabVIEW

    Check here https://zone.ni.com/reference/en-XX/help/371361M-01/lvconcepts/dynamic_loadcall_vis/

  • How the parameter of the procedure with the default table type?

    Hello!

    How the parameter of the procedure with the default table type?
    For example:
    type varchar2lType is table of varchar2(50) index by binary_integer;
    create or replace procedure test1
       (
        s1  varchar2(50)
        sa2 Varchar2Type
       )
    as
    begin
       dbms_output.put_line('yyxxyyy!');
    end;
    /
    Published by: bullbil on 16.01.2012 06:35

    If he should really be an associative array for some reason any (can't think why, but just for fun...) you could declare a dummy array in the packet header and specify as the default:

    create or replace package wr_test
    as
       type varchar2ltype is table of varchar2(50) index by pls_integer;
       g_dflt_varchar2l_tab varchar2ltype;
    
       procedure testit
          ( p_testarray varchar2ltype default g_dflt_varchar2l_tab );
    end wr_test;
    
    create or replace package body wr_test
    as
       procedure testit
          ( p_testarray varchar2ltype default g_dflt_varchar2l_tab )
       is
       begin
          dbms_output.put_line('p_testarray contains ' || p_testarray.count || ' elements');
       end testit;
    
    end wr_test;
    

    It is a bit of a hack, because it relies on a global variable that is exposed. A more orderly approach would overload the procedure so that a version does not have the table and another argument:

    create or replace package wr_test
    as
       type varchar2ltype is table of varchar2(50) index by pls_integer;
    
       procedure testit;
    
       procedure testit
          ( p_testarray varchar2ltype );
    
    end wr_test;
    
    create or replace package body wr_test
    as
    
       procedure testit
       is
          v_default_array varchar2ltype;
       begin
          testit(v_default_array);
       end testit;
    
       procedure testit
          ( p_testarray varchar2ltype )
       is
       begin
          dbms_output.put_line('p_testarray contains ' || p_testarray.count || ' elements');
       end testit;
    
    end wr_test;
    
  • the size of the out parameter in the procedure

    Hi all:

    I have a procedure in a pl/sql package like this:
    create or replace procedure MyProc (PRM_STR in VHARCHAR2, PRM_OUTSTR OUT VARCHAR2) is
    V_TEST VARCHAR2 (100)
    Start
    +...+
    V_STR: = SUBSTR (PRM_STR, 22, 31);
    V_TEST: = TRIM (V_STR);
    PRM_OUTSTR: = V_TEST;
    EXCEPTION
    WHILE OTHERS THEN
    +....+
    myproc end;

    When I run it, it always gives me an exception: ORA-06502: PL/SQL: digital or value error: character string buffer too small.
    Then I debug him:
    V_TEST: = TRIM (V_STR)
    is OK.
    While PRM_OUTSTR: = V_TEST, it throws this exception.

    I was confused, the out parameter in the procedure has a size? How can I set it?

    Please help me!
    Thank you very much!

    You must declare the size of the variable you use in the call to the procedure to be big enough.

    The output parameter itself may not be declared with a size:

    for example

    Your appeal should be something like the following:

    declare
    v_prmstr varchar2(4000)  :=  'Your input value';
    v_prmoutstr varchar2(4000);
    begin
    myproc(v_prmstr,v_prmoutstr) ;
    end;
    

    v_prmoutstr must be reported to be large enough to contain the value returned by the parameter
    PRM_OUTSTR

    added example variable
    Published by: Keith Jamieson on August 11, 2011 13:32

  • pass values of parameter to the procedure stored in the URL, possible?

    Hi, everyone, our system is Apex4.0.2 in Linux CentOS 5 on Oracle 11 g 2, here is the procedure:

    create or replace procedure test_public (Cust_id integer)
    is

    Start
    owa_util.mime_header ("text/xml", FALSE);
    owa_util.mime_header ("application/octet", FALSE);
    -Close the HTTP header
    owa_util.http_header_close;

    HTP.p (DBMS_XMLGEN.getXML ("SELECT * FROM demo_orders where customer_id ='|")) cust_ID));
    end;

    +/+

    the call to the stored procedure is SUCCESSFUL when Test_public has no parameters, as:
    http://myserver/Apex/myschema.test_public (OK)
    the question is: I want to spend the 3 settings in my stored procedure (on production procedure), do not know how?

    Any suggestions are greatly appreciated

    create or replace procedure test_public (param1, param2 IN VARCHAR2, param3 in NUMBER IN number)

    http://myserver/apex/myschema.test_public?param1=¶m2=¶m3=
    
  • issues related to the parameter in the procedure

    Hi all

    I have a procedure which the code is given below:

    create or replace PROCEDURE seods01.get_cert_tx_lot_tmp (acct_alt_id_in in VARCHAR2

    , acct_alt_id_cntx_cde_in IN VARCHAR2 default 'COLA account number.

    ,                                              ibd_id_in               IN  INTEGER

    qry_rslt_out to sys_refcursor)

    IS

    BEGIN

    OPEN FOR Qry_rslt_out

    SELECT L.tx_lot_seq_nbr

    L.hld_prd_dte

    L.orig_purc_dte

    L.tx_lot_amt

    L.updt_tx_lot_amt

    L.tran_desc_txt

    OF v_acct_alt_id A

    v_cd_tx_lot L

    WHERE A.acct_alt_id = acct_alt_id_in

    AND A.acct_alt_id_cntx_cde = acct_alt_id_cntx_cde_in

    AND A.ibd_id = ibd_id_in

    AND L.eods_acct_id = A.eods_acct_id;

    EXCEPTION

    WHILE OTHERS THEN

    dbms_output.put_line(SQLCODE||) SQLERRM);

    END get_cert_tx_lot_tmp;

    now when I run the SP in the following way it works fine:

    VAR C1 REFCURSOR
    EXECUTE SEODS01.get_cert_tx_lot_tmp ('004000000000000093108026740', 'Number of COLA account', '1',: C1);

    PRINT C1

    When I try to ignore this value by default setting, then it is throwing ' wrong number or types of arguments "error

    VAR C1 REFCURSOR
    EXECUTE SEODS01.get_cert_tx_lot_tmp ('004000000000000093108026740 ', ' 1',: C1);

    PRINT C1

    and when I tried to put this as null or "then it gives me no results. only way through which I can produce results of this procedure without giving the default parameter is the name of the column with the value of the parameter as follows:

    VAR C1 REFCURSOR
    RUN SEODS01.get_cert_tx_lot_tmp (acct_alt_id_in = > '004000000000000093108026740', ibd_id_in = > '1', qry_rslt_out = >: C1);

    PRINT C1

    but the condition is that we do not want our consumers to put names of columns when they do not pass the default value setting, I hope that there should be a way to do it. Could someone help me please on this issue.

    Hello

    If you want to use positional notation, then you can only omit parameters by default when they are at the end of the parameter list. In your case, this would mean

    (acct_alt_id_in in VARCHAR2

    ibd_id_in in FULL

    qry_rslt_out ON sys_refcursor

    acct_alt_id_cntx_cde_in IN VARCHAR2 default 'COLA account number')

    Or you can put the procedure in a package and overload

    PROCEDURE seods01.get_cert_tx_lot_tmp

    (acct_alt_id_in in VARCHAR2

    acct_alt_id_cntx_cde_in IN VARCHAR2

    ibd_id_in in FULL

    qry_rslt_out to sys_refcursor)

    PROCEDURE seods01.get_cert_tx_lot_tmp

    (acct_alt_id_in in VARCHAR2

    ibd_id_in in FULL

    qry_rslt_out to sys_refcursor)

    In the procedure without the acct_alt_id_cntx_cde_in parameter, you can call the other version and provide the default value.

    Concerning

    Marcus

  • procedure call with sys_refcursor as a parameter in the procedure

    Hello
    I tried the following procedure after sys_refcursor as parameter of a procedure,
    And confused about the procedure call
    CREATE OR REPLACE PROCEDURE test_ref (emp_cur IN sys_refcursor) IS
    emp_rec Z_emp%ROWTYPE;
    BEGIN
    LOOP
    FETCH emp_cur INTO emp_rec;
    EXIT WHEN emp_cur%NOTFOUND;
    dbms_output.put_line(emp_rec.ename ||' is a ' || emp_rec.job);
    END LOOP;
    END;
    How can I call the above procedure to get the data

    Thank you

    You must declare a variable sys_refcursor and open it with the necessary query and then pass that variable as a parameter to your procedure.

    Something like that.

    set serveroutput on
    
    declare
      my_cursor sys_refcursor;
    begin
      open my_cursor for select * from employee;
      test_ref (my_cursor);
    end;
    /
    
  • Problem in Varray as a parameter to the procedure

    Hi all

    I've created a type AS
    CREATE OR REPLACE TYPE v_tmp_array IS VARRAY(100) OF NUMBER;
    I am passing table as a parameter for the oracle java before procedure. How to spend together in SQL when the condition is it possible to archive?
    CREATE OR REPLACE PROCEDURE Proc_Varry_Para(p_array IN v_tmp_array, v_tmp OUT  REF CURSOR)
    AS
    
        BEGIN
         
     BMS_OUTPUT.PUT_LINE( 'begin' );
     SELECT * FROM ADDRESS WHERE ADDR_ID = p_array; --- need to pass whole array value  in where condition.
     OPEN v_tmp FOR v_sql_text;
        END;
    /
    Thanks and greetings
    Saami
    SELECT *
      FROM ADDRESS, TABLE (p_array) t
     WHERE ADDR_ID = t.COLUMN_VALUE;
    
  • How to pass a parameter in this procedure?

    Hi all

    I'm using oracle 11g.

    I have it here is the procedure.

    I need same procedure that accepts the name of_/ user Id of the useras a parameter and updates the infocenter reorganization for the particular user.

    create or replace

    PROCEDURE MS_SRA_UPDATE_USER_INFO_ORDER (p_user_id number,

    o_error_code ON the NUMBER,

    o_error_message OUT VARCHAR2)

    as

    PRAGMA AUTONOMOUS_TRANSACTION;

    BEGIN

    update of outdoor play of SI_USER_INFOCENTER_T (default_infocenter_flag, display_order) =)

    Select case when Claude = 1 then 'Y' else ' end flag n, Claude of

    (

    Select user_id, infocenter_name, default_infocenter_flag,

    ROW_NUMBER() over (partition by user_id stopped by)

    CASE INFOCENTER_NAME

    When 'A' then 1

    WHEN 'B' THEN 2

    WHEN 'C'                                        THEN 3

    WHEN ' THEN 4

    WHEN 'E' THEN 5

    When "F" then 6

    When 'G' THEN 7

    Of OTHER display_order

    Gladys END)

    OF SI_USER_INFOCENTER_T

    ) internal

    WHERE INNER. USER_ID = EXTERNAL. USER_ID AND INNER.INFOCENTER_NAME = OUTER.INFOCENTER_NAME

    )

    WHEN USER_ID NOT IN (SELECT

    user_id

    OF MS_SRA_USER_ORG_ROLE_ACT_V

    WHERE

    ORG_ENTITY_ID =

    (SELECT ORG_ENTITY_ID FROM SI_ORG_ENTITIES_T WHERE ORG_ENTITY_NAME = 'F'

    ));

    O_ERROR_CODE: = 0;

    O_ERROR_MESSAGE: = NULL;

    COMMIT;

    EXCEPTION

    WHILE OTHERS THEN

    O_ERROR_CODE: = SQLCODE;

    O_Error_Message: = Sqlerrm;

    END MS_SRA_UPDATE_USER_INFO_ORDER;

    I need same procedure that accepts the user Id/username as a parameter and updates the infocenter reorganization for the particular user.

    Thank you

    Dale

    Hello...

    I do not understand your question... Something like that

    CREATE OR REPLACE

    PROCEDURE MS_SRA_UPDATE_USER_INFO_ORDER (p_user_id, NUMBER of)

    o_error_code ON the NUMBER,

    o_error_message OUT VARCHAR2)

    AS

    PRAGMA AUTONOMOUS_TRANSACTION;

    BEGIN

    UPDATE SI_USER_INFOCENTER_T outer_qry

    SET (default_infocenter_flag, display_order) =

    (SELECT CASE WHEN epimachos = 1 THEN 'Y')

    ANOTHER "N".

    Flag of END,

    Claude (SELECT user_id,

    infocenter_name,

    -default_infocenter_flag,

    ROW_NUMBER() over (PARTITION BY user_id ORDER BY

    CASE INFOCENTER_NAME

    WHEN 'A' THEN 1

    WHEN 'B' THEN 2

    WHEN 'C' THEN 3

    WHEN ' THEN 4

    WHEN 'E' THEN 5

    WHEN "F" THEN 6

    WHEN 'G' THEN 7

    Of OTHER display_order

    Gladys END)

    OF SI_USER_INFOCENTER_T

    WHEN USER_ID = p_user_id) inner_qry

    WHERE inner_qry. User_id = outer_qry. USER_ID

    AND inner_qry.INFOCENTER_NAME = outer_qry.INFOCENTER_NAME

    )

    WHERE USER_ID = p_user_id

    AND NOT EXISTS (SELECT 1

    MSU MS_SRA_USER_ORG_ROLE_ACT_V

    WHERE ORG_ENTITY_ID = (SELECT ORG_ENTITY_ID FROM SI_ORG_ENTITIES_T WHERE ORG_ENTITY_NAME = 'F')

    AND msu.user_id = outer_qry. USER_ID

    AND msu.user_id = p_user_id);

    O_ERROR_CODE: = 0;

    O_ERROR_MESSAGE: = NULL;

    COMMIT;

    EXCEPTION

    WHILE OTHERS THEN

    O_ERROR_CODE: = SQLCODE;

    O_Error_Message: = SQLERRM;

    END MS_SRA_UPDATE_USER_INFO_ORDER;

  • Passing a parameter to the swf file

    Is it possible to pass a parameter to Flash like:
    myFlash.swf? action = Show

    Or do I have to use javascript?

    FlashVars:

    http://www.Adobe.com/cfusion/knowledgebase/index.cfm?id=tn_16417

  • SQL SELECT statement as a parameter in the procedure of string

    Hi all

    I'm new to PL/SQL and I must get a procedure as parameter select SQL select statement as a VARCHAR and the production output the result of the statement with a few changes. Can someone help me solve this problem?

    A possibility I thought at was to use a REF CURSOR. The following example works but binds me to a specific table (in the example of the "customers" table). However, I need the ability to specify arbitrary tables in the select statement parameter.
    SET SERVEROUTPUT ON
    DECLARE
      TYPE my_cur IS REF CURSOR;
      query_cursor my_cur;
    BEGIN
      OPEN query_cursor FOR 'SELECT * FROM customers';
      DECLARE
        record_type customers%ROWTYPE;
      BEGIN
         LOOP
            FETCH query_cursor INTO record_type;
            EXIT WHEN query_cursor%NOTFOUND;
            DBMS_OUTPUT.PUT_LINE('some output ... ');
         END LOOP;
      END;
      CLOSE query_cursor;
    END;
    /
    My idea was to modify this example to work in the following code, but it does not work (I get a compile error):
    SET SERVEROUTPUT ON
    DECLARE
      TYPE my_cur IS REF CURSOR;
      query_cursor my_cur;
    BEGIN
    
      OPEN query_cursor FOR 'SELECT * FROM customers';
    
      DECLARE
        record_type query_cursor%ROWTYPE;
      BEGIN
         LOOP
            FETCH query_cursor INTO record_type;
            EXIT WHEN query_cursor%NOTFOUND;
            DBMS_OUTPUT.PUT_LINE('some output ... ');
         END LOOP;
      END;
      
      CLOSE query_cursor;
    
    END;
    /
    Does anyone has an idea how can I solve my problem?

    Thank you very much!
    (I'm using Oracle 11 g)

    This can help.
    Re: Dynamic Extraction on dynamic Sql

  • Working with table gross typed the parameter of the procedure.

    I have a table defined as


    CREATE TABLE 'JOBS '.
    ("JOB_ID' VARCHAR2 (200 BYTE),
    'FUNCTION' RAW (16).
    NUMBER OF "MIN_SALARY."
    NUMBER OF "MAX_SALARY.
    )



    Defined as package

    create or replace package associative_array as
    type t_job_id is table of index jobs.job_id%type by pls_integer;
    type t_job_title is table of index jobs.job_title%type by pls_integer;
    type t_min_salary is table of index jobs.min_salary%type by pls_integer;
    type t_max_salary is table of index jobs.max_salary%type by pls_integer;

    procedure array_insert (p_job_id in t_job_id,
    p_job_title in t_job_title,
    p_min_salary in t_min_salary,
    p_max_salary to t_max_salary);
    end associative_array;
    /


    create or replace package body associative_array as
    procedure array_insert (p_job_id in t_job_id,
    p_job_title in t_job_title,
    p_min_salary in t_min_salary,
    p_max_salary to t_max_salary) is
    Start
    ForAll i in p_job_id.first... p_job_id. Last
    insert into jobs (job_id,
    function,
    min_salary,
    max_salary)
    values (p_job_id (i),
    p_job_title (i),
    p_min_salary (i),
    p_max_salary (i));
    end array_insert;
    end associative_array;
    /

    The client code is

    String s = "UserID = system; password = system; data source = ORCL; enlist = true; layout common = true ";

    create and open the connection object
    Con OracleConnection = new OracleConnection (constr.);
    con. Open();
    OracleCommand cmd = con. CreateCommand();
    cmd.CommandText = "associative_array.array_insert";
    cmd.CommandType = CommandType.StoredProcedure;

    create objects for each parameter setting
    OracleParameter p_job_id = new OracleParameter();
    OracleParameter p_job_title = new OracleParameter();
    OracleParameter p_min_salary = new OracleParameter();
    OracleParameter p_max_salary = new OracleParameter();

    set the type parameter for each parameter
    p_job_id. OracleDbType is OracleDbType.Varchar2.;
    p_job_title. OracleDbType = OracleDbType.Raw;
    p_min_salary. OracleDbType = OracleDbType.Decimal;
    p_max_salary. OracleDbType = OracleDbType.Decimal;

    Set the type of collection for each parameter
    p_job_id CollectionType in the Group OracleCollectionType.PLSQLAssociativeArray;
    p_job_title. CollectionType = OracleCollectionType.PLSQLAssociativeArray;
    p_min_salary. CollectionType = OracleCollectionType.PLSQLAssociativeArray;
    p_max_salary. CollectionType = OracleCollectionType.PLSQLAssociativeArray;

    Set the parameter values
    p_job_id. value = new string [3] {"IT_DBA", "IT_MAN", "IT_VP"};
    p_job_title. Value = new Guid [1] {Guid.NewGuid ()};
    p_min_salary. Value = new decimal [3] {8000, 12000, 18000};
    p_max_salary. Value = new decimal [3] {16000, 24000, 36000};

    set the size for each table
    p_job_id. size = 3;
    p_job_title. Size = 1;
    p_min_salary. Size = 3;
    p_max_salary. Size = 3;

    p_job_id. ParameterName = "p_job_id";
    p_min_salary. ParameterName = "p_min_salary";
    p_max_salary. ParameterName = "p_max_salary";
    p_job_title. ParameterName = "p_job_title";

    Add parameters to the collection of command objects
    cmd. Parameters.Add (p_job_id);
    cmd. Parameters.Add (p_job_title);
    cmd. Parameters.Add (p_min_salary);
    cmd. Parameters.Add (p_max_salary);

    BindByName. cmd = true;
    run the insert
    cmd ExecuteNonQuery());

    Error occurred during execution of the customer.

    Unhandled exception: System.ArgumentException: invalid parameter binding
    Parameter name: p_job_title
    at Oracle.DataAccess.Client.OracleParameter.GetBindingSize_Raw (Int32 idx)
    at Oracle.DataAccess.Client.OracleParameter.PreBind_Raw)
    to Oracle.DataAccess.Client.OracleParameter.PreBind (OracleConnection conn, IntPtr errCtx, Int32 arraySize)
    at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery)

    But if I change jobs. P_job_title varchar2 and change function. Value and p_job_title. Therefore, any OracleDbType is fine.

    Following me is at fault-
    p_job_title. Value = new Guid [1] {Guid.NewGuid ()};

    Since you have already said-
    p_job_title. OracleDbType = OracleDbType.Raw;

    You must have 'p_job_title. Value' as 'Byte' or 'OracleBinary.

    It will be useful.

Maybe you are looking for