Insert the procedural error

I wrote an insert procedure. It shows some errors.
This is the query.

create or replace PROCEDURE SP_MEMBERS_IN)
P_MEM_ID IN MEMBERS. MEM_ID,
P_MEM_NAME IN MEMBERS. MEM_NAME,
P_B_DAY IN MEMBERS. B_DAY,
p_address in MEMBERS. ADDRESS

*)*
AS
BEGIN
INSERT INTO MEMBERS (MEM_ID, MEM_NAME, B_DAY, ADDRESS)
VALUES (P_MEM_ID, P_MEM_NAME, P_B_DAY, P_ADDRESS);
COMMIT;

END SP_MEMBERS_IN;

Here are the errors.
Error (1): PL/SQL: analysis of completed Compilation unit
Error (2.1): PLS-00488: invalid variable declaration: object ' MEMBERS. MEM_ID' must be a type or subtype

Can someone help me fix it please?

create or replace PROCEDURE SP_MEMBERS_IN)
P_MEM_ID IN MEMBERS. MEM_ID % TYPE,
P_MEM_NAME IN MEMBERS. MEM_NAME % TYPE,
P_B_DAY IN MEMBERS. B_DAY % TYPE,
p_address in MEMBERS. ADDRESS TYPE %

)
AS
BEGIN
INSERT INTO MEMBERS (MEM_ID, MEM_NAME, B_DAY, ADDRESS)
VALUES (P_MEM_ID, P_MEM_NAME, P_B_DAY, P_ADDRESS);
COMMIT;

END SP_MEMBERS_IN;

you forget to put % TYPE in the settings variable declaration

Tags: Database

Similar Questions

  • Dynamic insertion within the procedure error


    Hi all

    I use under oracle database on HP - UX.

    BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
    PL/SQL Release 10.2.0.5.0 - Production
    CORE Production 10.2.0.5.0
    AMT for HP - UX: 10.2.0.5.0 - Production Version
    NLSRTL Version 10.2.0.5.0 - Production

    I'm not able to run the procedure below and it returns the error. The insert in the procedure returns error. If I execute manually only the insert statement, it works well.
    Can someone help me with this issue?

    Procedure
    ===========
    create or replace procedure test_proc
    as
    v_sql varchar2 (2000);
    Start
    v_sql: =' insert into TABLE1 (select owner, object_type, object_name, "S", "Y" of dba_objects@LINK1 )
    where owner = "ABC" and object_type = "TABLE" less
    Select the owner, object_type, object_name, "S", "Y" from dba_objects where owner = "ABC" and object_type = "TABLE") ';

    immediately run v_sql;
    commit;
    end;
    /

    exec test_proc;

    Error:
    ===========

    ERROR on line 1:
    ORA-00942: table or view does not exist
    ORA-06512: at "SYSTEM. TEST_PROC", line 8
    ORA-06512: at line 1

    user running this procedure doesn't have permission to read data from DBA_OBJECTS. Grant select permission on that to the user running this procedure and it should work.

    Onkar

  • Form on the procedural error

    Hello
    I create a do_post procedure in my pattern and I have created a page using the "form on the procedure," Wizard
    When creating the form, I can choose the steps in the wizard and the form was created successfully.
    But when I run the page and click submit, the error
    ORA-06550: line 1, column 7: PLS-00221: 'DO_POST' is not a procedure or is undefined ORA-06550: line 1, column 7: PL/SQL: statement ignored
    you are prompted.

    Anyone know is there any step I missed?

    Thank you

    Vincent Pek

    Vincent:

    You must create a procedure and not a function

    CREATE or replace procedure test (vtest varchar2)
    Result varchar2 (5);
    Start
    Result: = '1234';
    Return (result);
    end test;

    CITY

  • Insert the section error

    I'm following along with the tutorial "Creating your first site" while trying to build my own Web site. I get an error when you try to put something in the article inside the DIV of heroes. It is said: while executing onLoad in InsertArticle.htm, the JavaScript error accurred next:

    In the file 'InsertArticle ':

    InitializeUI is undefined.

    What does that mean?

    I've tried everything. It did not work. Finally, I contacted Adobe and had to uninstall and re-install Dreamweaver. It took me all day to get there. My Internet connection is so slow, that although I have broadband, it took over an hour to download it again. GISH, at least it works now. Thanks for trying to help me. I appreciate it.

  • Insert the CK error | CKM | Check constraint is not picked up by ODI11g

    I'm trying to hit a stage in CKM 'insert error CK' and it is always checked "run" and there is not so other condition in the code

    I've created an interface that has activated the Frother and target constraint check (no constraint check in ODI datastore)

    Now how should be my designed interface for my "insert error CK' step executed?

    Sorry, I wrote too fast on this one, I'm not sure of the Oracle RKM's check of reverse engineering constraints. It may be only PKs, FKs and constraints not null.

    CHECK in ODI constraints are called "Conditions". You can add it by expanding your data store in the left pane and right-click on the constraints:

    Kind regards

    JeromeFr

  • Insert the registration error

    I have a form that I built to collect order information. The form worked perfectly, I added two products and has two functions that added dedicated points of the goods and now I get this error when you try to add new fields to the insert statement:

    While executing onLoad in insert Record2.htm, the following JavaScript error has occurred:

    At line 1203 {path/Editoperations.js} file:
    TyperError: tagList .getAttribute ("Name") has no properties

    It doesn't matter which can translate into plain English?

    Solution to my problem:

    One of my functions watched the point value of the question which has been put in my table and multiplied by the quantity of the order in each area. This habit document.getElementById, so instead of having the name = as an attribute in each input field, I got id =.

    To solve the problem, I entered name = entry next to the id = name each field.

  • Getting error while inserting data from source to the target in the procedures?

    Hello

    I want to insert the data from the source to the target in the procedures, have the same schema.

    For this, I did as follows

    Command on the source:

    Technologies: oracle

    Schema: EDWHCMB

    Command:

    SELECT COMPANY_NAME, COMPANY_CODE OF

    EDWHCMB. DWT_COMAPNY

    Command on the target:

    Technologies: oracle

    Schema: EDWHCMB

    command:

    INSERT INTO EDWHCMB. TEMP

    VALUES)

    COMPANY_CODE,

    COMPANY_NAME)

    I have run the procudere then I got error as follows

    ODI-1228: SAMPLE1 (procedure) task fails on ORACLE EDWH connection target.

    Caused by: java.sql.BatchUpdateException: ORA-00984: column not allowed here.


    How to insert the data from the source to the target in the proceedings?

    Please send any document to this...

    Please help me.

    Thanks in advance,

    A.Kavya.

    Hi Bruno.

    If your tables are on the same schema then why do you use command on the source and the command on the target? You can simply do the following on the command on the target

    INSERT INTO EDWHCMB. TEMP

    SELECT COMPANY_NAME, COMPANY_CODE OF

    EDWHCMB. DWT_COMAPNY


    If you really want at all to use the command on the source and target both then I think you need to change the following code on your order on the target

    INSERT INTO EDWHCMB. TEMP

    VALUES)

    : COMPANY_CODE,.

    (: COMPANY_NAME)

    Hope your TEMP table has only these 2 columns.

    Thank you

    Ajay

  • System error "the procedure entry point _SetAsyncTraceParams at (@)" 16 is not found in the library of dynamic links ATRACE. "." DLL.

    Original title: no access to system restore

    After a massive search, I can't solve this problem! Please indicate why this is happening and how to solve it.  Thank you for your support.

    This is the error message pop up that I got trying to activiate (Rstrui.exe) system restore "the procedure entry point _SetAsyncTraceParams at (@) 16 be found in ATRACE dynamic link library. DLL. notice the @ in support should replace 'at' since the seizure of this character created a link to MFL and was confusing to read!

    Hi intelegend,

    1. Did you the latest changes on the computer?
    2. You have security software installed on the computer?

    Method 1

    I suggest that scan you SFC on the computer that would be a corrupt system file search.

    The analysis may take some time, so be patient. Windows allows to fix corrupt or missing files it finds. If the information of the installation CD is required to fix the problem, you may be asked to insert your Windows XP installation CD.

    Description of Windows XP and Windows Server 2003 System File Checker (Sfc.exe)

    http://support.Microsoft.com/kb/310747

    Method 2

    If the previous step fails, then it is possible that some third-party programs installed on the computer is causing the problem.

    I suggest that you configure the computer in a clean boot state and check if it helps.

    To help resolve the error and other messages, you can start Windows XP by using a minimal set of drivers and startup programs. This type of boot is known as a "clean boot". A clean boot helps eliminate software conflicts.

    See section to learn more about how to clean boot.

    How to configure Windows XP to start in a "clean boot" State

    http://support.Microsoft.com/kb/310353

    Reset the computer to start as usual

    When you are finished troubleshooting, follow these steps to reset the computer to start as usual:

    (a) click Start, type msconfig in the search box and press ENTER.

    (b) If you are prompted for an administrator password or for confirmation, type your password or click on continue.

    (c) under the general tab, click the Normal startup option, and then click OK.

    (d) when you are prompted to restart the computer, click on restart.

    Method 3

    If the steps above do not then refer to the article below and check if it helps.

    Steps of troubleshooting for problems when you try to use the System Restore tool in Windows XP

    http://support.Microsoft.com/kb/302796

  • Error when starting my computer code: there is no disc in the drive. Please insert the floppy disk in drive\Device\Harddisk3\DR3

    I just started getting this error in the last month.  It only happens when I start my computer.  I started to use Windows Live Mail Beta.  Would this have something to do with it?

    The problem was with Windows Live Sync.  Once I have not won, I didn't the message again.

    I'm fairly certain that this has nothing to do with Windows Live Mail beta - but it does not sound like a startup program any want a disc in the drive and that is what causes the problem.

    To boot from the hard drive, first of all, in the boot sequence, you may need to change the BIOS to hard drive first in the boot sequence (it is not always necessary and I have my system set to start first on the CD player and have no problem - but you have problems so we'll see if that fixes the).  To do this, hold the screen that tells you the key F to push to enter the menu start or start of installation.  Push it quickly. Make the changes, save your work and exit.  While there, make sure that there is no setting to boot the disk hard regardless of the boot sequence.  Reset.  Normally, it should start without the error message.

    If this does not work, what is the EXACT (including all codes verbatim) error message?  It refers to a specific file, and if yes, what is the file name?  Are you able to start despite the message or that you need to insert the CD in the drive and then it allows you to start?

    Try to boot into safe mode without any CD in the drive (repeatedly clicking the F8 key during the boot process until the menu appears) and see if it works or if you have the same problem.  If you can start in safe mode, it's a good sign.

    If this does not work, try a boot minimum http://support.microsoft.com/kb/929135.  If the problem goes away then it's just a matter of tracking down the culprit at the origin of the problem.   Follow the procedures described in the article.  Once found, remove, delete, disable or uninstall.  Once remember to put Vista in normal status, as described in the procedures. If the problem occurs in clean mode then just restore the system to normal and reboot - this solution will not work.

    If this does not work, go to start / search area and type msconfig.exe and enter, and double-click on the program icon that appears.  Go to the Startup tab and remove all checks, click OK, close the program and reboot and see if the problem persists.  If this isn't the case, then the problem is caused by something trying to boot at startup, and you may need to add the items back one by one, restarting after each one, until you find the culprit at the origin of the problem.  Then let this disabled element, double-check all the others that you actually want from startup, click OK, close the program and restart.  The problem should be solved.  If it's not working, then go back and re-check items that have been checked, click OK, and save the program and restart.  You'll be back to where you started, but we will have eliminated a very likely cause.

    That's all for now.  I hope this helps.  If the problem persists, I need more information about this message and all the files that he mentions.

    Good luck!

    Lorien - MCSA/MCSE/network + / has + - if this post solves your problem, please click the 'Mark as answer' or 'Useful' button at the top of this message. Marking a post as answer, or relatively useful, you help others find the answer more quickly.

  • ODI - 1228 error when you try to delete a table using the procedure

    Hello

    I get the following error when I run the procedure. The process has two steps.

    Step 1: Drop table (REF_TABLE1 ;) removal
    Step 2: Complete the Table (Insert statements)

    ODI-1228: Load_Ref_Roles_Privileges_List (procedure) of the task fails on ORACLE DEVSCHEMA target connection.
    Caused by: java.sql.SQLSyntaxErrorException: ORA-00911: invalid character

    CODE: delete from REF_TABLE1;

    When I run the same delete statement into a TOAD, it works. Also, if I run it with only step2 it works.

    Please notify. Thanks for your time and your help.

    Hello

    Could you try without the *. * ?

    Only

    delete from REF_TABLE1
    

    Kind regards
    JeromeFr

  • Insert the output of a refcursor procedure into a table

    Hello

    I met a scenario in which I need to put the insert records returned by a procedure using refcursor, at a table.

    I followed the instructions in PL/SQL 101: understanding Refcursor (PL/SQL 101: understanding Ref Cursor am unfortunately still not able to do so.)

    Here is my sample codes. (Copied here as advised by the new Member)
    create or replace PROCEDURE TEST_PROCEDURE1 ( p_cursor OUT SYS_REFCURSOR)
    AS
    BEGIN
    OPEN p_cursor FOR
    SELECT C1,C2
    FROM TEST_USER.test_table4procedure;
    END;
    I check the result using the following statement, which gives results.
    variable rc refcursor;
    exec TEST_USER.TEST_PROCEDURE1 (:rc)
    print rc;
    Now, I want to be able to use the output and insert the data into a table. That's how I came across this thread.

    I created the types and function...
    create or replace type test_user.type_table1 as object(var1 varchar2(50),var2 varchar2(50));
    create or replace type test_user.type_table2 as table of test_user.type_table1;
    
    create or replace function test_user.test_function1 (rc in sys_refcursor )
    return test_user.type_table2 is
    v_emptype test_user.type_table2 := test_user.type_table2(); -- Declare a local table structure and initialize it
    v_cnt number := 0;
    v_rc sys_refcursor;
    v_var1 varchar2(20);
    v_var2 varchar2(20);
    begin
    v_rc := rc;
    loop
    fetch v_rc into v_var1, v_var2;
    exit when v_rc%NOTFOUND;
    v_emptype.extend;
    v_cnt := v_cnt + 1;
    v_emptype(v_cnt) := test_user.type_table1(v_var1, v_var2);
    end loop;
    close v_rc;
    return v_emptype;
    end;
    After that, I want to be able to view the records by using the function... so I used the instructions below...
    variable rc refcursor;
    exec TEST_USER.TEST_PROCEDURE1 (:rc)
    SELECT * FROM TABLE(test_user.test_function1(:rc));   
    However, it fails with the error

    Error from line 3 in order:
    SELECT * FROM TABLE (test_user.test_function1 (:rc))
    Error report:
    SQL error: Missing a setting IN or OUT to index: 1

    Help, please...

    Your code does not work for a simple reason. SYS_REFCURSOR parameters must be in IN OUT mode. Check if the RC is open when he switched mode:

    create or replace type type_table1 as object(var1 varchar2(50),var2 varchar2(50))
    /
    create or replace type type_table2 as table of type_table1
    /
    create or replace PROCEDURE TEST_PROCEDURE1 (p_cursor IN OUT SYS_REFCURSOR)
    AS
    BEGIN
    OPEN p_cursor FOR
    SELECT ENAME,JOB FROM EMP;
    END;
    /
    create or replace function test_function1 (rc in sys_refcursor )
    return type_table2 is
    v_emptype type_table2 := type_table2(); -- Declare a local table structure and initialize it
    v_cnt number := 0;
    v_var1 varchar2(20);
    v_var2 varchar2(20);
    begin
    if rc%isopen
      then
        dbms_output.put_line('rc is open');
      else
        dbms_output.put_line('rc is not open');
     end if;
    loop
    fetch rc into v_var1, v_var2;
    exit when rc%NOTFOUND;
    v_emptype.extend;
    v_cnt := v_cnt + 1;
    v_emptype(v_cnt) := type_table1(v_var1, v_var2);
    end loop;
    close rc;
    return v_emptype;
    end;
    /
    variable rc refcursor
    exec TEST_PROCEDURE1(:rc)
    set serveroutput on
    SELECT * FROM TABLE(test_function1(:rc))
    /
    SELECT * FROM TABLE(test_function1(:rc))
                        *
    ERROR at line 1:
    ORA-01001: invalid cursor
    ORA-06512: at "SCOTT.TEST_FUNCTION1", line 15
    
    rc is not open
    SQL> 
    

    Now IN OUT parameter edit mode:

    set serveroutput off
    create or replace function test_function1 (rc in out sys_refcursor )
    return type_table2 is
    v_emptype type_table2 := type_table2(); -- Declare a local table structure and initialize it
    v_cnt number := 0;
    v_var1 varchar2(20);
    v_var2 varchar2(20);
    begin
    if rc%isopen
      then
        dbms_output.put_line('rc is open');
      else
        dbms_output.put_line('rc is not open');
     end if;
    loop
    fetch rc into v_var1, v_var2;
    exit when rc%NOTFOUND;
    v_emptype.extend;
    v_cnt := v_cnt + 1;
    v_emptype(v_cnt) := type_table1(v_var1, v_var2);
    end loop;
    close rc;
    return v_emptype;
    end;
    /
    variable rc refcursor
    exec TEST_PROCEDURE1(:rc)
    set serveroutput on
    declare
    v_emptype type_table2 := type_table2();
    begin
    v_emptype := test_function1(:rc);
    end;
    /
    rc is open
    
    PL/SQL procedure successfully completed.
    
    SQL> 
    

    Problem is that you can't call the procedure/function with parameters in/out OUT of SQL.

    SY.

  • [Insert values in table with the output values of the procedure]

    Hello

    I wrote the following procedure

    <>PROCEDURE
    create or replace procedure experience is
    cursor curexp is e.employee_id, trunc (months_between (jh.end_date, jh.start_date)) select exp, e.first_name, e.last_name, d.department_name, l.city, c.country_name, l.street_address
    e employees, job_history jh, departments d, places the country c
    where e.employee_id = jh.employee_id
    and e.department_id = d.department_id
    and d.location_id = l.location_id
    and l.country_id = c.country_id;

    v_result curexp % rowtype;

    Start
    Open curexp;
    loop
    extract the curexp in v_result;
    When the output curexp % notfound;
    dbms_output.put_line (v_result.employee_id |) ' '|| v_result.exp | ' '|| v_result.first_name | v_result.last_name);
    end loop;
    end;
    < / procedure >

    to get the values as below
    < output >
    101 NeenaKochhar 49
    101 NeenaKochhar 40
    102 66 LexDe Haan
    114 DenRaphaely 21
    122 PayamKaufling 11
    176 helenethibaut 9
    176 helenethibaut 11
    200 JenniferWhalen 69
    200 JenniferWhalen 53
    201 MichaelHartstein 46
    < / output >
    After that, I created a table as below
    < table >
    create table exp_recored (employee_id number, number of exp_mon, name varchar2 (20))
    < /table >
    Now I want to insert values in the table above

    I tried like below
    < Insert >
    Start
    insert into exp_recored (employe_id, exp_mon, name) values (experience);
    end;
    < / insetr >
    but I got error like below

    PL/SQL: ORA-00947: not enough values

    Could someone tell me please on the above point

    Thank you
    Thelak

    thelakbe wrote:
    Hello

    I tried too

    During this operation
    Start
    insert into exp_recored (employe_id, exp_mon, name) values (v_result.employee_id, v_result.exp, v_result.first_name | v_result.last_name);
    end;

    I got the below error

    PL/SQL: ORA-00984: column not allowed here

    You can try this?

    CREATE OR REPLACE
    PROCEDURE experience
    IS
      CURSOR curexp
      IS
        SELECT e.employee_id,
          TRUNC(months_between(jh.end_date,jh.start_date)) exp,
          e.first_name,
          e.last_name,
          d.department_name,
          l.city,
          c.country_name,
          l.street_address
        FROM employees e,
          job_history jh,
          departments d,
          locations l,
          countries c
        WHERE e.employee_id=jh.employee_id
        AND e.department_id=d.department_id
        AND d.location_id  =l.location_id
        AND l.country_id   =c.country_id;
      v_result curexp%rowtype;
    BEGIN
      OPEN curexp;
      LOOP
        FETCH CUREXP INTO V_RESULT;
        EXIT WHEN CUREXP% NOTFOUND;
    
        INSERT INTO EXP_RECORED (EMPLOYEE_ID,EXP_MON,NAME)
        VALUES (V_RESULT.EMPLOYEE_ID,V_RESULT.EXP,V_RESULT.FIRST_NAME||V_RESULT.LAST_NAME);
      END LOOP;
    
      COMMIT;
    END;
    
  • Optimization of the insert/update procedure

    My requirement is to insert into the TEST table using the select query.
    If the new record found then insert into the table
    Otherwise update the table with the procedure in the p_dt and p_bno parameters.
    I've written as below. It works fine,
    But you want to optimize the code.
    Could you help me in this.
    create table test (o_id number,rt_cd varchar2(11),fator varchar2(11),l_ind varchar2(11),
    up_dt date,bc_no number)
    
    
    create or replace procedure proc_test ( P_dt DATE ,P_bno NUMBER)
     IS
      cursor c_nm is
        select distinct a.id vo_id,b.r_cd vrt_cd,null vfator, 'C' vl_ind,p_dt up_dt,p_bno bc_no
         from test1 a,test2 b
           where a.id =b.id
    BEGIN
      BEGIN
       insert into test (
         o_id,rt_cd,fator,l_ind,up_dt,bc_no)
       select * from (select distinct a.id vo_id,b.r_cd vrt_cd,null vfator, 'C' vl_ind,p_dt up_dt,p_bno bc_no
         from test1 a,test2 b
           where a.id =b.id) T
        where not exists (select 1 from test t1
                           where T.o_id = t1.o_id
                             and T.r_cd = t1.r_cd );
        commit;
       Exception when others then
         DBMS_OUTPUT.PUT_LINE(' In Error'|||| SQLCODE|| '-'|| SQLERRM);
     
      for i in c_cur loop
       update test 
        set o_id =i.vo_id ,rt_cd =i.vrt_cd,fator =i.vfator ,l_ind =i.vl_ind,up_dt=p_dt ,bc_no =p_bno
        where o_id=i.vo_id and rt_cd =i.vrt_cd ;
       end loop;
      commit;
     exception when others then
         DBMS_OUTPUT.PUT_LINE(' Main Error'|||| SQLCODE|| '-'|| SQLERRM);
     end;
    Could you help me in this.
  • TableName the sending of a procedure, error

    Hi all

    DB version: 10g.

    Problem: I want to send a tablename to a procedure. So, I want to insert the contents of this table to join different tables in a table t say. Here is my code that does not work
    CREATE OR REPLACE PROCEDURE PRC_R (tbl IN USER_TABLES.TABLE_NAME%TYPE)
    sqltxt                  VARCHAR2(5000);
    IS
    
    BEGIN
    sqltxt := 'select * from ' || tbl;
    
    INSERT /*+ APPEND */  INTO t
     SELECT  col1,
                  col2,
                  col3
    
      FROM   (execute immediate sqltxt
                 ) t
             JOIN t1 ON t.id = t1.id
             JOIN t2 ON ..    
    END;
    This "Found"sqltxt»(, Expecting: CROIX PLEINE INNER JOIN GAUCHE NATUREL PARTITIONNER TOUT-ou-)"error

    Please let me know if this can be resolved.

    Thanks in advance.

    Published by: abyss on Nov 18, 2010 11:56

    OF (execution immediate sqltxt)

    You can't do that.

    You will need to make the whole INSERT dynamic.

  • Errors in the procedure

    Hi all

    I wrote plsql procedure to lode, spaces of table as data:
    CREATE OR REPLACE PROCEDURE PTABLESPACES IS
    CURSOR C1 IS
    Select occupied_space, d.owner, d.tablespace_name, sum(d.BYTES/1024) as total_space, sum(e.BYTES/1024)
    ((((sum(d.BYTES/1024) - sum(e.BYTES/1024)) as free_space,ROUND((sum(e.BYTES/1024)/sum(d.BYTES/1024)) * 100) AS PERCENT_OCCUPIED
    by dba_segments d, e dba_extents where d.owner = e.owner and d.tablespace_name = e.tablespace_name
    D.owner group, d.tablespace_name order of d.owner;

    BEGIN
    FOR I IN C1 LOOP
    INSERT INTO TABLE_SPACES VALUES(I.OWNER,I.tablespace_name,I.total_space,I.occupied_space,I.free_space,I.PERCENT_OCCUPIED);
    END LOOP;
    END PTABLESPACES;


    When I run it as a block of Nedved, it works perfectly.
    But when I put it in the procedure is to show errors.

    Error:
    5/21 PL/SQL: ORA-00942: table or view does not exist


    Please help about this
    Thanks in advance.

    Hello

    As Urs said, you must have the priviges granted directly to you, not only for a role that is granted.

    The statement "In PL/SQL grants must be made directly with the user" is a little too simplified.
    Roles used within stored procedures.
    Roles work in anonymous PL/SQL blocks, PL/SQL, but are not stored in the database.

Maybe you are looking for