Execute concatenated procedure

Hello,
How can I execute a procedure from a package in another procedure in that package when I combined the name of this procedure from a table.
I have a table containing procedure names and parameters that go with it.
With a cursor in another procedure I want to combine this together and execute that combined procedure.
Here is some code to clarify
CURSOR c_sel IS
     SELECT ids,proc_nm,period_1,period_2,period_3,period_4
     FROM fep_adm_prcs
     WHERE select_bl ='Y';
CURSOR c_trunc(p_procids IN NUMBER) IS
     SELECT tab_name
     FROM FEP_ADM_TABS
     WHERE PROC_IDS = p_procids;
period1_t VARCHAR2(10);
period2_t VARCHAR2(10);
period3_t VARCHAR2(10);
period4_t VARCHAR2(10);
BEGIN
-- Start looping all procedures named in the collection
     FOR r_sel IN c_sel LOOP
     -- Fisrt truncate every table related to the selected procedure before start of load new data
          FOR r_trunc IN c_trunc(r_sel.ids) LOOP
          DBMS_OUTPUT.PUT_LINE('TRUNCATE TABLE '||r_trunc.tab_name);
          EXECUTE IMMEDIATE ('TRUNCATE TABLE '||r_trunc.tab_name);
          END LOOP;
     -- Second loop through the 4 periods and generate execution script when period is not null
          IF r_sel.period_1 IS NOT NULL THEN
               DBMS_OUTPUT.PUT_LINE('execute fep_compute_tables.'||r_sel.proc_nm||'('''||r_sel.period_1||''')');
               --EXECUTE IMMEDIATE('execute FEP_COMPUTE_TABLES.'||r_sel.proc_nm||'('''||r_sel.period_1||''')');
               FEP_COMPUTE_TABLES.r_sel.proc_nm(r_sel.period_1);
          END IF;
This last one is not working, but how can I get it to work?
Thanks a lot

this is the error I get
ORA-00900 invalid SQL statement
Cause: The statement is not recognized as a valid SQL statement. This error can occur if the Procedural Option is not installed and a SQL statement is issued that requires this option (for example, a CREATE PROCEDURE statement). You can determine if the Procedural Option is installed by starting SQL*Plus. If the PL/SQL banner is not displayed, then the option is not installed.
Action: Correct the syntax or install the Procedural Option.

Similar Messages

  • Error While executing a procedure

    Hello FOlks,
    When i try to execute this procedure below i get the error saying "Compiled with errors"
    ORA--00942-Table or View does not exist
    SQL Statement ignored at Line 17.
    I tried querying the table and it returns no data. How do i debug this error.
    create or replace procedure Load_FADM_Staging_Area_test(p_data_load_date date) is
    v_start_date                date;
    v_end_date                  date;
    begin
    if  p_data_load_date is null then
        select (sysdate - 7), (sysdate - 1) into v_start_date, v_end_date from dual;
      elsif p_data_load_date is not null then
       select (p_data_load_date - 7), (p_data_load_date - 1) into v_start_date, v_end_date from dual;
      else
        raise_application_error('-20042', 'Data control - GetDataControlAuditData : Date parameter must be a date of this or a previous week.');
      end if;
    insert into STAGE_FADM_HRI_STAGE_BILL
    (select
    a.batch_id 
    ,a.beginning_service_date 
    ,a.bill_id 
    ,a.bill_method 
    ,a.bill_number 
    ,a.bill_received_date 
    ,a.bill_status 
    ,a.bill_type 
    ,a.change_oltp_by 
    ,a.change_oltp_date 
    ,a.client_datafeed_code 
    ,a.client_id 
    ,a.created_date 
    ,a.date_of_incident 
    ,a.date_paid 
    ,a.deleted_oltp_by 
    ,a.deleted_oltp_date 
    ,a.duplicate_bill 
    ,a.ending_service_date 
    ,a.event_case_id 
    ,a.event_id 
    ,a.from_oltp_by 
    ,a.oltp_bill_status 
    ,a.review_status 
    ,'HRI' schema_name
    , sysdate Load_date
    ,'ETLPROCESS001' Load_user
    ,sysdate
    from stage_bill@hri1_read_only_remote a
    where
    --created_date >= to_date('20101031 235959', 'YYYYMMDD HH24MISS')
    created_date >= v_start_date
    and
    --created_date <= to_date('20101111 235959', 'YYYYMMDD HH24MISS')
      created_date <= v_end_date
    and not exists
    (select
    b.batch_id 
    ,b.beginning_service_date 
    ,b.bill_id 
    ,b.bill_method 
    ,b.bill_number 
    ,b.bill_received_date 
    ,b.bill_status 
    ,b.bill_type 
    ,b.change_oltp_by 
    ,b.change_oltp_date 
    ,b.client_datafeed_code 
    ,b.client_id 
    ,b.created_date 
    ,b.date_of_incident 
    ,b.date_paid 
    ,b.deleted_oltp_by 
    ,b.deleted_oltp_date 
    ,b.duplicate_bill 
    ,b.ending_service_date 
    ,b.event_case_id 
    ,b.event_id 
    ,b.from_oltp_by 
    ,b.oltp_bill_status 
    ,b.review_status
    ,b.Row_Effective_Date
    from STAGE_FADM_HRI_STAGE_BILL b))
    select
    e.action_plan  e_action_plan
    ,e.action_plan_status e_action_plan_status
    ,e.batch_id e_batch_id
    ,e.client_cause_code e_client_cause_code
    ,e.client_id e_client_id
    ,e.client_datafeed_code e_client_datafeed_code
    ,e.client_policy_identifier e_client_policy_identifier
    ,e.close_date e_close_date
    ,e.created_date e_created_date
    ,e.date_of_incident e_date_of_incident
    ,e.date_typed e_date_typed
    ,e.discovery_source e_discovery_source
    ,e.employer_group_id e_employer_group_id
    ,e.event_id e_event_id
    ,e.event_status_code  e_event_status_code
    ,e.event_type_code e_event_type_code
    ,e.exclude_from_invoice e_exclude_from_invoice
    ,e.from_ncoa_date e_from_ncoa_date
    ,e.group_contract_funding_type e_group_contract_funding_type
    ,e.hmo_ppo_indemnity_type e_hmo_ppo_indemnity_type
    ,e.insurance_product_name e_insurance_product_name
    ,e.insured_termination_date e_insured_termination_date
    ,e.invoice_date e_invoice_date
    ,e.letter_status e_letter_status
    ,e.letter_status_date e_letter_status_date
    ,e.liability_analysis e_liability_analysis
    ,e.loss_city e_loss_city
    ,e.loss_description e_loss_description
    ,e.loss_state_code e_loss_state_code
    ,e.manually_moved e_manually_moved
    ,e.moved_by_user_id e_moved_by_user_id
    ,e.ncoa_code e_ncoa_code
    ,e.next_steps e_next_steps
    ,e.open_date e_open_date
    ,e.policy_holder_address1 e_policy_holder_address1
    ,e.policy_holder_address2 e_policy_holder_address2
    ,ec.action_plan
    ,ec.action_plan_status
    ,ec.batch_id
    ,ec.case_status_code
    ,ec.client_datafeed_code
    ,ec.client_id
    ,ec.client_party_identifier
    ,ec.close_date
    ,ec.created_date
    ,ec.damaged_party_address1
    ,ec.damaged_party_address2
    ,ec.damaged_party_city
    ,ec.damaged_party_dob
    ,ec.damaged_party_first_name
    ,ec.damaged_party_gender
    ,ec.damaged_party_last_name
    ,ec.damaged_party_ssn
    ,ec.damaged_party_state_code
    ,ec.damaged_party_zip
    ,ec.deductible
    ,ec.deductible_applied
    ,ec.deductible_recovered
    ,ec.deductible_recovered_full
    ,ec.event_case_id
    ,ec.event_id
    ,ec.fee_schedule_code
    ,ec.internal_coverage_code
    ,ec.litigation_flag
    ,ec.loss_injury_description
    ,ec.next_steps
    ,ec.open_date
    ,ec.payment_coverage_code
    ,ec.pursuit_level_code
    ,ec.reject_code
    ,ec.reject_comments
    ,ec.reject_date
    ,ec.reject_date
    ,ec.reject_user_id
    ,ec.setup_type
    ,ec.tot_paid_at_close
    ,eccf.Client_field_data  eccf_client_fleld_data
    ,eccf.Client_field_name eccf_client_field_name
    ,eccf.Client_id eccf_client_id
    ,eccf.Event_case_id eccf_event_case_id
    ,ecf.client_field_data  ecf_client_field_data
    ,ecf.client_field_name ecf_client_field_name
    ,ecf.client_id ecf_client_id
    ,ecf.event_id  ecf_event_id
    from
    event@hri1_read_only_remote e,
    event_case@hri1_read_only_remote ec,
    event_case_client_field@hri1_read_only_remote eccf,
    event_client_field@hri1_read_only_remote ecf,
    stg_fadm_hri_stage_bill sb
    where
    e.event_id = ec.event_id and
    e.event_id = ecf.event_id  and
    ec.event_case_id = eccf.event_case_id and
    e.event_id = ecf.event_id and
    e.client_id = ecf.client_id and
    e.client_id = ec.client_id and
    ec.client_id = ecf.client_id and
    e.event_id = sb.event_id  and
    ec.event_case_id = sb.event_case_id and
    eccf.event_case_id = sb.event_case_id and
    ecf.event_id = sb.event_id;
    end Load_FADM_Staging_Area_TEST;

    Just noticed
    I tried querying the table and it returns no data.Could be your NOT EXISTS clause, you are missing something? - "Something" exists, unless the table is empty.
    Should probably be something like:
    AND NOT EXISTS (SELECT NULL -- You are actually not selecting anything, just probing for existence
                      WHERE  <<Correlation to table "a">>Furthermore, you'll never manage to compile the procedure since your second select does not select INTO anything.
    (A more apprpriate subject would be "Error while compiling a procedure".)
    Finally, When would the ELSE be reached here?
    if p_data_load_date IS NULL then
        select (sysdate - 7), (sysdate - 1) into v_start_date, v_end_date from dual;
    elsif p_data_load_date IS NOT NULL then
        select (p_data_load_date - 7), (p_data_load_date - 1) into v_start_date, v_end_date from dual;
    ELSE
        raise_application_error('-20042', 'Data control - GetDataControlAuditData : Date parameter must be a date of this or a previous week.');
    end if;Regards
    Peter

  • Error while executing a procedure in Package

    ORA-04068: existing state of packages has been discarded
    ORA-04061: existing state of package "PLLODS.LK" has been invalidated
    ORA-04065: not executed, altered or dropped package "PLLODS.LK"
    ORA-06508: PL/SQL: could not find program unit being called
    ORA-06512: at line 1Why did this error arise when I changed a package and recompiled?

    This errors occurs when a package was executed in session A, compiled in session B, and then executed again in session A. The package executed in session A is in Oracle buffer, but its definition was changed in session B (which session A is unaware of). Now session A uses the old definition of the package but Oracle checks what is in buffer to the new definition and finds a difference. Therefore, it generates an error:
    ORA-04068: existing state of packages has been discarded
    and other related errors.
    Just execute the procedure (in the package) again and you should not see the error again.
    Make sure the stae of the package is valid, that is, when it was recompiled, the package compiled successfully.
    Shakti
    http://www.impact-sol.com
    Developers of Guggi Oracle - Tool for Developers and DBAs

  • PL/SQL: Executing a procedure from within another procedure

    Hello, I'm a newbie and I need help on how to execute procedures from within another procedure. The procedure that I call from within the procedure have return values that I want to check.
    I tried: EXECUTE(user_get_forum_info(p_forumid, var_forum_exists, var_forum_access, var_forumname));
    but I get the error message:
    PLS-00103: Encountered the symbol "USER_GET_FORUM_INFO" when expecting one of the following::= . ( @ % ; immediate
    The symbol ":=" was substituted for "USER_GET_FORUM_INFO" to continue.
    And when I tried: EXECUTE(user_get_forum_info(p_forumid, var_forum_exists, var_forum_access, var_forumname));
    I get the error message:
    PLS-00222: no function with name 'USER_GET_FORUM_INFO' exists in this scope
    PL/SQL: Statement ignored
    The procedure USER_GET_FORUM_INFO exists. (don't understand why it says "no FUNCTION with name", it's a procedure I'm executing)
    I'm stuck so thanks for any help...
    Below is all the code. I'm using Oracle 9i on RedHat Linux 7.3.
    ================================================================================
    CREATE OR REPLACE PROCEDURE user_forum_requestsaccess (
    p_forumid IN NUMBER,
    p_requestmessage IN VARCHAR2
    AS
    var_forumid NUMBER;
    var_forum_exists NUMBER;
    var_forum_access NUMBER;
    request_exists NUMBER;
    var_forumname VARCHAR2(30);
    FORUM_DOESNT_EXIST EXCEPTION;
    FORUM_USER_HAS_ACCESS EXCEPTION;
    FORUM_REQUEST_EXIST EXCEPTION;
    BEGIN
    SELECT SIGN(NVL((SELECT request_id FROM forum.vw_all_forum_requests WHERE forum_id = p_forumid AND db_user = user),0)) INTO request_exists FROM DUAL;
    EXECUTE(user_get_forum_info(p_forumid, var_forum_exists, var_forum_access, var_forumname));
    IF var_forum_exists = 0 THEN
    RAISE FORUM_DOESNT_EXIST;
    ELSIF var_forum_access = 1 THEN
    RAISE FORUM_USER_HAS_ACCESS;
    ELSIF request_exists = 1 THEN
    RAISE FORUM_REQUEST_EXIST;
    ELSE
    INSERT INTO tbl_forum_requests VALUES (SEQ_TBL_FORUM_REQ_REQ_ID.NEXTVAL, SYSDATE, p_requestmessage, p_forumid, user);
    INSERT INTO tbl_forum_eventlog VALUES (SEQ_TBL_FORUM_EVNTLOG_EVNT_ID.NEXTVAL,SYSDATE,1,'User ' || user || ' requested access to forum ' || var_forumname || '.', p_forumid,user);
    COMMIT;
    END IF;
    EXCEPTION
    WHEN
    FORUM_DOESNT_EXIST
    THEN RAISE_APPLICATION_ERROR(-20003,'Forum doesnt exist.');
    WHEN
    FORUM_USER_HAS_ACCESS
    THEN RAISE_APPLICATION_ERROR(-20004,'User already have access to this forum.');
    WHEN
    FORUM_REQUEST_EXIST
    THEN RAISE_APPLICATION_ERROR(-20005,'A request to this forum already exist.');
    END;
    GRANT EXECUTE ON user_forum_requestsaccess TO forum_user;
    ================================================================================
    Regards Goran

    you don't have to use execute when you want to execute a procedure (only on sql*plus, you would use it)
    just give the name of the funtion
    create or replace procedure test
    as
    begin
        dbms_output.put_line('this is the procedure test');
    end test;
    create or replace procedure call_test
    as
    begin
        dbms_output.put_line('this is the procedure call_test going to execute the procedure test');
        test;
    end call_test;
    begin
        dbms_output.put_line('this is an anonymous block calling the procedure call_test');
        call_test;
    end;
    /

  • How to execute a procedure in the same db session of the framework page

    i am using oaframework personalization to create a link. when the link is clicked i will execute a database procedure using /psl/DAD/procedurename. currently when the user clicks on the link it will get executed in separate database session.
    but i want execute the procedure in the db session on the current oa page. is there a way to achive this.
    Thanks
    sreekanth.g

    You can do this, create a simple stackLayout region, add an AM, Controller to it. Add a submit button or link with fireAction set on it. Write a method in your AM and call it from your controller's processFormRequest by capturing the button or link event. In the AM method you can invoke the procedure. Use personalization and attach the region to the page.

  • How can I execute Stored Procedures in PARALLEL and DYNAMICALLY ?

    Hi 
    I have a stored procedure. It can be executed like this
    exec test @p = 1;
    exec test @p = 2
    exec test @p = n;
    n can be hundred.
    I want the sp being executed in parallel, not sequence. It means the 3 examples above can be run at the same time.
    If I know the number in advance, say 3, I can create 3 different Execution SQL Tasks. They can be run in parallel.
    However, the n is not static. It is coming from a table. 
    How can I execute Stored Procedures in PARALLEL and DYNAMICALLY ?
    I think about using script task. In the script, I get the value of n, and the list of p, from the table, then running a loop with. In the loop, I create a threat and in the threat, I execute the sp like : exec test @p = p. So the exec test may
    be run parallel. But I am not sure if it works.
    Any idea is really appreciated.

    Hi nam_man,
    According to your description, you want to call stored procedures in parallel, right?
    In SSIS, we can create separate jobs with different stored procedures, then set the same schedule to kick the jobs off at the same time. In this way, we should be careful to monitor blocking and deadlocking depending on what the jobs are doing.
    We can also put all stored procedures in SSIS Sequence container, then they will be run in parallel.
    For more information about SSIS job and Sequence container, please refer to the following documents:
    http://www.mssqltips.com/sqlservertutorial/220/scheduling-ssis-packages-with-sql-server-agent/
    https://msdn.microsoft.com/en-us/library/ms139855(v=sql.110).aspx
    If you have any more questions, please feel free to ask.
    Thanks,
    Wendy Fu
    Wendy Fu
    TechNet Community Support

  • How to execute a procedure depending on the result of a query?

    Hello, I'm new in ODI.
    I want to execute a procedure depending on the result of a query Oracle table.
    We have a Oracle Table whit a column that contains two possibles values.
    I want read the table, row by row, and depending on this value, execute a Procedure or execute another.
    How can i do?

    what you need to do is
    1. create a variable which "new_var2" which has the count of the number of rows you want to process. must be data type numeric.
    2. copy "new_var2" to the package screen.
    3. duplicate the "new_var2" on the package screen and evaluate the variable and test for "> 0" zero, call it "new_var2_E"
    3. create a new odi variable "new_var1" with a refresh of "select field1 fom (select field1,rownum as rownumber from tablex) where rownumber = #new_var2" in the relevant schema and technology.
    4. copy "new_var1" into your package (some where in the flow)
    5. right click the "new_var1" variable in you package screen and you should get the option duplicate step (click on that)
    6. select the the duplicate "new_var1" on the package screen and correct the the name to something meaning full to you "new_var1_E", also change the "type" to "evaluate variable" then you should see a "value" box. enter one of the values you want to test in the box (remember do not put in quotes ' )
    7. now back on the package screen join the "new_var1" to the "new_var1_E" with an OK line
    8 you now join "new_var2" to "new_var2_E" with OK
    9 you join "new_var2_E" to "new_var1"
    10. you then join the "new_var1_E" with an OK or a KO line to the relevant procedure.
    12. you need to duplicate "new_var2" in the package screen one more time this time and call it "new_var2_D" set the type to evaluate and then select the increment of -1
    13. the relevant procedure to "new_var2_D" with an OK
    14. join the "new_var2_D" to the "new_var2_E" with an OK
    15. this should close off the loop now the exit point is "new_var2_E" with a KO line to the next part of your process....
    Basically you should end up with a loop on new_var2 decementing, and it is used to get a specific next record row from your table.
    Hope this helps, sorry it is a little long winded..
    Edited by: DavidGD on Feb 8, 2009 3:29 PM

  • Error in executing a procedure

    Hello All,
    I am trying to use an update statement in PL/SQL procedure with some date parameters.
    Can anyone please tell me whats wrong with the syntax.
    Also please suggest any better ways to do this.
    Thanks a lot in advance.
    PROCEDURE
    CREATE OR REPLACE procedure NEW_PROGRAM_test(Enter0_if_this_Mon_ELSE_entr1 IN integer)
    is
    start_date date;
    end_date_1 date;
    end_date_3 date;
    begin
    if Enter0_if_this_Mon_ELSE_entr1:= 0 then
    start_date := trunc(add_months(LAST_DAY(SYSDATE)+1, -1));
    end_date_1 := trunc((add_months(LAST_DAY(SYSDATE), 0)));
    end_date_3 := trunc(add_months(LAST_DAY(SYSDATE), 2));
    elsif
    Enter0_if_this_Mon_ELSE_entr1:= 1
    then
    start_date := trunc(add_months(LAST_DAY(SYSDATE)+1, 0));
    end_date_1 := trunc((add_months(LAST_DAY(SYSDATE), 1)));
    end_date_3 := trunc(add_months(LAST_DAY(SYSDATE), 3));
    else
    {dbms_output.put_line('This is invalid, please retry!');
    End if;
    Update mytable1 m1
    set AT_EXP_FLAG ='Y'
    where
    --expiration_date between to_date('01-AUG-2006', 'DD-MON-YYYY') and to_date('31-OCT-2006', 'DD-MON-YYYY')
    expiration_date between start_date and end_date_3
    and exists (select contact_id
    from mytable1 m2
    where
    --((extract(year from expiration_date)=CURRENT_YEAR_AS_4digits) and (extract(month from expiration_date) = (CURRENT_MONTH_AS_2digits+1)))
    -- m2.expiration_date between to_date('01-AUG-2006', 'DD-MON-YYYY') and to_date('31-AUG-2006', 'DD-MON-YYYY')
    (m2.expiration_date between startdate and end_date_1) and (m2.contact_id = m1.contact_id));
    end;

A: Error in executing a procedure

Thank Every one,
I have taken out the curly braces { } and changed the assignment operator to comparision operator. The procedure compiles without any errors.
However, I have declared variables(start_date, End_date_1 and End_date_3). How do I use them in the statement below:
Statement
(m2.expiration_date between to_date('startdate', 'DD-MON-YYYY') and to_date('end_date_1', 'DD-MON-YYYY'))
When I use this as is, and execute the procedure with 1 as input parameter I am getting this error:
ERROR
ORA-01858: a non-numeric character was found where a numeric was expected
ORA-06512: at "DBUSER.NEW_PROGRAM_TEST", line 28
ORA-06512: at line 7
Here is the complete proc:
CREATE OR REPLACE procedure NEW_PROGRAM_test(Enter0_if_this_Mon_ELSE_entr1 IN integer)
is
start_date date;
end_date_1 date;
end_date_3 date;
begin
IF Enter0_if_this_Mon_ELSE_entr1= 0 then
start_date := trunc(add_months(LAST_DAY(SYSDATE)+1, -1));
end_date_1 := trunc((add_months(LAST_DAY(SYSDATE), 0)));
end_date_3 := trunc(add_months(LAST_DAY(SYSDATE), 2));
elsif
Enter0_if_this_Mon_ELSE_entr1= 1 then
start_date := trunc(add_months(LAST_DAY(SYSDATE)+1, 0));
end_date_1 := trunc((add_months(LAST_DAY(SYSDATE), 1)));
end_date_3 := trunc(add_months(LAST_DAY(SYSDATE), 3));
else
     dbms_output.put_line('This is invalid, please retry!');
End if;
Update mytable1 m1
set AT_EXP_FLAG ='Y'
where
expiration_date between start_date and end_date_3
and exists (select contact_id
from mytable1 m2
where
          (m2.expiration_date between to_date('startdate', 'DD-MON-YYYY') and to_date('end_date_1', 'DD-MON-YYYY'))
-- (m2.expiration_date between 'startdate' and 'end_date_1')
          and (m2.contact_id = m1.contact_id));
end;
Please suggest ..
Thanks in advance.
Ac

Thank Every one,
I have taken out the curly braces { } and changed the assignment operator to comparision operator. The procedure compiles without any errors.
However, I have declared variables(start_date, End_date_1 and End_date_3). How do I use them in the statement below:
Statement
(m2.expiration_date between to_date('startdate', 'DD-MON-YYYY') and to_date('end_date_1', 'DD-MON-YYYY'))
When I use this as is, and execute the procedure with 1 as input parameter I am getting this error:
ERROR
ORA-01858: a non-numeric character was found where a numeric was expected
ORA-06512: at "DBUSER.NEW_PROGRAM_TEST", line 28
ORA-06512: at line 7
Here is the complete proc:
CREATE OR REPLACE procedure NEW_PROGRAM_test(Enter0_if_this_Mon_ELSE_entr1 IN integer)
is
start_date date;
end_date_1 date;
end_date_3 date;
begin
IF Enter0_if_this_Mon_ELSE_entr1= 0 then
start_date := trunc(add_months(LAST_DAY(SYSDATE)+1, -1));
end_date_1 := trunc((add_months(LAST_DAY(SYSDATE), 0)));
end_date_3 := trunc(add_months(LAST_DAY(SYSDATE), 2));
elsif
Enter0_if_this_Mon_ELSE_entr1= 1 then
start_date := trunc(add_months(LAST_DAY(SYSDATE)+1, 0));
end_date_1 := trunc((add_months(LAST_DAY(SYSDATE), 1)));
end_date_3 := trunc(add_months(LAST_DAY(SYSDATE), 3));
else
     dbms_output.put_line('This is invalid, please retry!');
End if;
Update mytable1 m1
set AT_EXP_FLAG ='Y'
where
expiration_date between start_date and end_date_3
and exists (select contact_id
from mytable1 m2
where
          (m2.expiration_date between to_date('startdate', 'DD-MON-YYYY') and to_date('end_date_1', 'DD-MON-YYYY'))
-- (m2.expiration_date between 'startdate' and 'end_date_1')
          and (m2.contact_id = m1.contact_id));
end;
Please suggest ..
Thanks in advance.
Ac

  • Error while executing PlSQL Procedure

    Hi Chris,
    Procedure SPR_VISAMAST_SWITCHCATEGORIZE is created in the TimesTen interchange user. and all object used by this procedure also cached in the TimesTen.
    While executing it is giving error.
    I traced out where execution is failing, i found that update query on cached table it is giving error.
    Command> DECLARE
    > SOUTPUT VARCHAR2(4000);
    > BEGIN
    > INTERCHANGE.SPR_VISAMAST_SWITCHCATEGORIZE('123456', 'SWTCH.030709', 'v2.01', 'fl.01' , 'v2.02' , '1' , SOUTPUT);
    > END;
    > /
    5213: Bad Oracle login error in OCISessionBegin(): ORA-01017: invalid username/password; logon denied rc = -1
    5131: Cannot connect to backend database: OracleNetServiceName = "geni11g", uid = "INTERCHANGE", pwd is hidden, TNS_ADMIN = "/u01/app/oracle/product/11.1.0/db_1/network/admin", ORACLE_HOME= "/u01/app/oracle/product/11.1.0/db_1"
    8507: ORA-06512: at "INTERCHANGE.SPR_VISAMAST_SWITCHCATEGORIZE", line 39
    8507: ORA-06512: at line 4
    The command failed.
    Please tell me how to solve this issue.

    So when you execute this procedure it is actually executing as user INTERCHANGE. Any objects that the procedure references whcih do not include an explicit owner will assume the object is owned by user INTERCHANGE and this may mean that an object cannot be found.
    Here is an example...
    Let's say you have a cached table in TimesTen and the table is owned by the user 'CACHEUSER' - CACHEUSER.MyCachedtable.
    If you create a PL/SQL procedure owned by the user INTERCHANGE - INTERCHANGE.Someprocedure and within thie procedure include a statement like SELECT * FROM MyCachedtable then when the procedure is executed it will by default always look for the table INTERCHANGE.MyCachedTable even if the user executing the procedure is 'CACHEUSER'. As a result, it would not find the table MyCachedTable in TimesTen and, depending on the setting for PassThrough it might try and go to Oracle for this table.
    Another possibility is that the PL/SQL procedure is performing some cache operation that requires interaction with the Oracle DB and you did not include 'OraclePWD=xxx' to provide the password for Oracle when you connected. Remember that the procedure will be executing, by default, as the user INTERCHANGE not as the user 'CACHEUSER'.
    Chris

  • Error 01741 executing a procedure

    While executing a procedure I'm getting the following error:
    BEGIN
    ERROR at line 1:
    ORA-01741: illegal zero-length identifier
    ORA-06512: at "SYS.DBMS_STREAMS_ADM_UTL_INVOK", line 289
    ORA-06512: at "SYS.DBMS_STREAMS_ADM", line 439
    ORA-06512: at "SYS.DBMS_STREAMS_ADM", line 397
    ORA-06512: at line 2

    I mean you can try using this code:
    BEGIN
         DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
              schema_name => 'MYSCHEMA',
              streams_type => 'capture',
              streams_name => 'capture_process',
              queue_name => 'capture_queue',
              include_dml => true,
              include_ddl => true,
              include_tagged_lcr => false,
              source_database => 'ANAG',
              inclusion_rule => true);
    END;
    Just try and let me know...

  • Executing A Procedure In a Package Using DBLink

    I need to execute a procedure which is residing in a package using dblink.
    The package got a execute PUBLIC grant.
    When I execute the following statement, I am getting error ORA: 00904, Invalid Identifier
    select PKG_NAME.PROCEDURE_NAME@dblink(null,null,null,null,null,null,null,null,null,null,null) from dual
    How can I execute the above statement.
    Thanks in advance

    I have a database INLABNEW in that i have done this
    SQL> create table temp(no number)
      2  /
    Table created.
    SQL> create or replace package pkg
      2  as
      3     procedure p;
      4  end;
      5  /
    Package created.
    SQL>  create or replace package body pkg
      2   as
      3      procedure p
      4      is
      5      begin
      6             insert into temp values(1);
      7      end;
      8   end;
      9  /
    Package body created.
    SQL> select * from temp
      2  /
    no rows selectedNow i executed the procedure pkg.p from another database
    SQL> exec pkg.p@to_inlabnew
    PL/SQL procedure successfully completed.
    SQL> commit
      2  /And i query the table tmp in INLABNEW
    SQL> select * from temp
      2  /
            NO
             1Now question is have you given your procedure name properly.
    as your procedure is in a package it should be Your_package_name.Your_procedure_name@Your_db_link

  • Executing a procedure in package

    Hi,
    How to execute a procedure in a package? Below is the package
    CREATE OR REPLACE PACKAGE BODY POPULATE_GLTD_TABLES
    IS
    -- LOCAL VARIABLES
    val1 VARCHAR2(10);
    -- Create some job objects:
    v_job1_str VARCHAR2(4000) ;
    v_job1 XXMCK.XXMCK_JOB_OT;
    PROCEDURE populate_gltd_tabs1
    IS
    BEGIN
    dbms_output.put_line('Get_status=> v_job1: ');
    val1:= F_CHECK_GLTD_RECORD_EXISTS('MCK_GLTD_1');
    IF val1 != 'S' THEN
    -- Include message details value - TRUE if yes and FALSE if no
    xxmck.mck_write_log_msg.set_msg_tail(TRUE);
    xxmck.mck_write_log_msg.purge('GLTD-TASK1');
    -- set context will define the source as well as inserts data into cont exit table
    xxmck.mck_write_log_msg.set_context(v_parent_program,v_prog_desc,'GLTD-TASK1');
    xxmck.mck_write_log_msg.log(v_parent_program,'Entering in LOAD_GLTD_TABLES.populate_gltd_tabs1 ','prg','GLTD-TASK1',1);
    xxmck.mck_write_log_msg.log_tail(v_parent_program,'Entering in LOAD_GLTD_TABLES.populate_gltd_tabs1 ','prg','GLTD-TASK1');
    v_job1_str := 'XXCOGNOS.LOAD_GLTD_TABLES.populate_gltd_tabs1;';
    v_job1 := NEW XXMCK.XXMCK_JOB_OT('GLTD-TASK1', v_job1_str, 'Background job test: LOAD_GLTD_TABLES.populate_gltd_tabs1', INTERVAL '60' SECOND);
    v_job1.PRINT(); -- Display basic info about the job
    v_job1.SUBMIT(); -- Submit in background
    v_job1.WAIT();
    v_job1.PRINT();
    v_job1.get_status(v_code, v_message);
    dbms_output.put_line('Get_status=> v_job1: ' || v_code || ':' || v_message);
    -- SELECT DECODE(cont_exit, 'cont', 'cont', 'err', 'err', 'cont') INTO v_result from MCK_LOG_CONT_EXIT_CHK WHERE source = 'GLTD-TASK1';
    --IF v_result = 'err' THEN
    -- raise_application_error(-20000,'Program Aborted');
    --END IF;
    END IF;
    EXCEPTION
    WHEN OTHERS THEN NULL;
    END populate_gltd_tabs1;
    PROCEDURE mainproc
    IS
    BEGIN
    populate_gltd_tabs1; -- CALL TO POPULATE mck_gltd_1 TABLE
    -- Mailing
    xxmck.mck_write_log_msg.send_mail( p_source_prg => v_parent_program
    ,p_source => 'GLTD-TASK1'
    ,p_msg_type => 'prg'
    ,p_from => '[email protected]'
    ,p_to => '[email protected]'
    ,p_server => 'mailhub.mckinsey.com'
    EXCEPTION
    WHEN OTHERS THEN NULL;
    END mainproc;
    END POPULATE_GLTD_TABLES;
    And below is my anonymous block to execute above package
    BEGIN
    POPULATE_MCK_GLTDFILE.mainproc;
    EXCEPTION -- exception handler begin
    WHEN OTHERS THEN NULL;
    END;
    I am trying to run above code in toad. But i am getting error as: identifier 'POPULATE_MCK_GLTDFILE.mainproc' must be declared.
    There are no parameters to be passed.
    The package is compiled successfully.
    I think this must be simplest question any one can I ask, but I cant figure out the solution.
    Please help,
    Aditya

    First remove the horrible exception handler(s) which are hiding all errors;
    ie the
    when others
    then
    null;
    end;Then remember the main syntax is
    begin
    packagename.procedurename;
    end;
    /But also remember that procedure name must be declared in the package header if you want to call it. (This is called a public procedure). A private procedure does not have to be declared in the package header and can only be called from within the same package body.
    I always use sqlplus for verification as that is delivered with oracle. You know if it works with sqlplus it will work with any othere client and if it does not, it's usually a client issue.
    from what you have posted, There is nothing obvious as to why it won't work.

  • While executing the Procedure Getting Error

    Hi I am New to ODI.
    I create one new Procedure just to delete the Target table.
    delete from <%=snpRef.getTable("L","T_CUSTOMER","D")%>. T_Customer is my target table.Technology:Oracle(Both Source and Target)
    I selected the correct Context ,Schema and Technology.
    While executing the procedure i am getting following error
    java.lang.Exception: Internal error: object ConnectConnection
    ColConnectId:null
    ColContextCode:DEV
    ColConName:null
    ColIndCommit:null
    ColIsolLevel:null
    ColLschemaName:null
    ColPlanComp:null
    ColTechIntName:null
    DefConnectId:null
    DefContextCode:DEV
    DefConName:null
    DefIndCommit:null
    DefIsolLevel:null
    DefLschemaName:FCS
    DefPlanComp:null
    DefTechIntName:ORACLE
    ExeChannel:J
    IndErr:1
    IndLogMethod:null
    IndLogNb:null
    LogLevDet:3
    Nno:1
    OrdTrt:0
    ScenTaskNo:1
    SessNo:61001
    TaskName1:Procedure
    TaskName2:Delete
    TaskName3:Delete
    TaskType:S
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execSrcOrders(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSqlS.treatTaskTrt(SnpSessTaskSqlS.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandSession.treatCommand(DwgCommandSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandBase.execute(DwgCommandBase.java)
         at com.sunopsis.dwg.cmd.e.i(e.java)
         at com.sunopsis.dwg.cmd.g.y(g.java)
         at com.sunopsis.dwg.cmd.e.run(e.java)
         at java.lang.Thread.run(Unknown Source)
    Thanks in advance.

    i Used the below syntax and checked its working fine.
    delete from <%=snpRef.getObjectName("L","T_CUSTOMER","D")%>

  • Getting ORA-06512/ORA-00972 ERROR WHILE EXECUTING THE PROCEDURE????

    Hi ,
    while executing this procedure , I am getting follwoing errors:
    Create or Replace procedure ADD_CUSTOM_INDEX is
    INDX_NOT_EXIST Number;
    CREATE_SQL_STATMENT VARCHAR2(1500);
    ALTER_SQL_STATMENT VARCHAR2(150);
    CURSOR C1 IS select INDEX_NAME,CREATE_DDL FROM W_CUSTOM_TEST, WC_COMPANY_G WHERE W_CUSTOM_TEST.SYS_TENANT_ID = WC_COMPANY_G.BU_ID;
    BEGIN
    for V_ROW in C1 loop
         SELECT COUNT(USER_INDEXES.INDEX_NAME) INTO INDX_NOT_EXIST FROM USER_INDEXES WHERE USER_INDEXES.INDEX_NAME = V_ROW.index_name;
         IF INDX_NOT_EXIST = 0 THEN
         CREATE_SQL_STATMENT := ''|| '"'|| V_ROW.CREATE_DDL ||'"' ||'PARALLEL NOLOGGING';
         EXECUTE IMMEDIATE CREATE_SQL_STATMENT;
         ALTER_SQL_STATMENT := 'ALTER INDEX ' ||'"'|| V_ROW.INDEX_NAME ||'"'|| ' NOPARALLEL LOGGING';
         EXECUTE IMMEDIATE ALTER_SQL_STATMENT;
         END IF;
    END LOOP;
    END ADD_CUSTOM_INDEX;
    ERROR at line 1:
    ORA-00972: identifier is too long
    ORA-06512: at "LOLAP.ADD_CUSTOM_INDEX", line 13
    ORA-06512: at line 1.
    sturtuce of W_custom_test table is as below:
    CREATE TABLE "LOLAP"."W_CUSTOM_TEST"
    ("INDEX_NAME" VARCHAR2(30) NOT NULL ENABLE,
         "SYS_TENANT_ID" VARCHAR2(15) NOT NULL ENABLE,
    "CREATE_DDL" VARCHAR2(1200),
    "COMMENTS" VARCHAR2(200),
         "STAT_CD" VARCHAR2(30) DEFAULT 'Active' NOT NULL ENABLE,
         "CREATED" DATE DEFAULT SYSDATE NOT NULL ENABLE,
         "LAST_UPD" DATE DEFAULT SYSDATE NOT NULL ENABLE
    Any Pointer??????

    Hi
    Instead of giving as below, go for the not null constraints.
    "STAT_CD" VARCHAR2(30) DEFAULT 'Active' NOT NULL ENABLE,
    "CREATED" DATE DEFAULT SYSDATE NOT NULL ENABLE,
    "LAST_UPD" DATE DEFAULT SYSDATE NOT NULL ENABLE
    That should help
    Regards
    Sudheer

  • How to execute a procedure if out parameter is table type

    Hi,
    I need to execute a procedure, output parameter of the procedure is table type.
    Oracle version I am using is 9.2.0.8 . I am using SQL*Plus
    Procedure declaration
    PROCEDURE current_open_cycle (p_ban IN repl_cust2.billing_account.ban%TYPE,
    v_bill_seq_rec OUT bill_seq_table) ;
    Table type declaration
    TYPE bill_seq_table IS
    TABLE OF bill_seq_rectype INDEX BY BINARY_INTEGER ;
    TYPE bill_seq_rectype IS RECORD (v_cycle_run_year repl_cust2.bill.cycle_run_year%TYPE,
    v_cycle_run_month repl_cust2.bill.cycle_run_month%TYPE,
    v_cycle_code repl_cust2.bill.cycle_code%TYPE,
    v_open_cycle BOOLEAN, -- An open cycle
    v_billed_cycle BOOLEAN, --
    v_invoice_number VARCHAR2(13),
    v_start_date DATE,
    v_end_date DATE,
    v_root_ban repl_cust2.bill.root_ban%TYPE) ;
    I tried executing using this script, but it failed. When I execute this oracle lost connection to data base.
    declare
    r_bill_seq_rec ss_invoice_utilities.bill_seq_table;
    begin
    ss_invoice_utilities.current_open_cycle(934018003,r_bill_seq_rec);
    end;
    Please help me how I should write declare block to execute this procedure and also print output of the procedure.
    Regards
    Raghu

    I don't see anything wrong with the anonymous block, assuming ss_invoice_utilities is the correct package name. Perhaps a simplified test case would show up what's not working there.
    As for printing the contents of an associative array, you'll have to write some code to loop through it and construct a string per row to output via dbms_output, assuming the text will fit within dbms_output's size restrictions in 9i. dbms_output is a debugging tool though - is that the requirement?
    btw "pls_integer" is less to type than "binary_integer" ;)
    Edited by: William Robertson on Apr 16, 2009 8:35 AM

  • Maybe you are looking for

    • New 150/65 only at 94 Download AND Won't Work with Gigabit Switch

      I just had this installed today, converting up from the 35/35, and ran into these two problems: 1.  The 150 download is only resulting in a 94.87 Mpbs.  The installer originally said it must be my PC NIC card, but I do have a GB card, so there's does

    • Hdmi to thunderbolt for camera input??

      We have a mid-2011 17" Macbook Pro and have a Panasonic HMC150 camera that we need to input for a Webex conference.  The camera is HDMI out.  Does anyone know if an HDMI to Thunderbolt adapter will allow the Macbook to recognize the camera?  Or is th

    • Query for geetiing no.of working days

      Hi All, How can we write a query for geetiing no.of working days in Oracle Apps. Basically we need to mention no.of working days in the Work-Flow Form but not the no.of days. So how can we write a query for getting no.of working days.and Where can we

    • Purchace Order -A/P Invoice

      Hi we are creating PO s for a service items in foreign currency and when we convert it to an A/P Invoice, it displays a Debug error message and needs to close the SAP. can you help me to find the solution for  this. kind regards, chaminda ratnayake

    • Sensor and Pixel Basics

      The recent introduction of the 5Ds with its 50.6 megapixels leads me to ask about sensor size and pixels.  There is an on-line tome by W. H. Majoros that describes the situation well, I think.  You can reference it at "digitalbirdphotography.com". Fr