No Data Found in SELECT INTO

Hi all,
I try to select into a variable in a cursor loop but I get NO DATA FOUND when
the select doesn't return a value.
I want to set the variable to be 0 when the select fails.
I tried to add an exception but I get the following:
ORA-00900: invalid SQL statement
Here is the code I'm trying to execute (The exception is commented):
Line: -----
PROCEDURE MyProc IS
v_op NUMBER;
BEGIN
FOR cursor1 IN (select * from myTable)
LOOP
SELECT operation INTO v_op FROM operationsTable where id=cursor1.ID;
--EXCEPTION*
--    WHEN NO_DATA_FOUND THEN
--      v_op :=0;
--END;*
END LOOP;
END MyProc ;
Line: -----
Does anybody know how to set a variable when the select fails with NO DATA FOUND?
Thanks
dyahav

Hi,
Exception block should come outside the loop. i.e. it should be at the end of the block statement.
PRAZY@solarc> create table emp_temp as select * from emp where 1=3;
Table created.
Elapsed: 00:00:00.03
PRAZY@solarc> ed
Wrote file afiedt.buf
  1  declare
  2  a number;
  3  begin
  4  <<mainblock>>
  5  begin
  6  for c1 in (select * from emp) loop
  7  select empno into a from emp_temp where empno=c1.empno;
  8  end loop;
  9  exception when no_data_found then
10  a:=0;
11  end mainblock;
12  dbms_output.put_line(a);
13* end;
PRAZY@solarc> /
0
PL/SQL procedure successfully completed.Regards,
Prazy

Similar Messages

  • Wb_rt_mapaudit_util.premap getting a 'NO DATA FOUND' error

    We just did an export of our database and after importing we are getting the following error when we try to execute any OWB maps:
    ERROR at line 1:
    ORA-01403: no data found
    ORA-06512: at "OWBREP.WB_RT_MAPAUDIT_UTIL", line 1027
    ORA-06512: at "MUDWMGR.LOAD_ETL_STU_DEMO_STG", line 14261
    ORA-06512: at line 12
    We actually did the import and export successfully in our development and test instance but it's giving this error in production unfortunately :(
    Any help would be appreciated.
    Thanks,
    Brian

    Thanks for the reply. Unfortunately i get the following error when I attempt to deploye the mapping:
    java.sql.SQLException: no rows found for select into statement
    at sqlj.runtime.error.Errors.raiseError(Errors.java:118)
    at sqlj.runtime.error.Errors.raiseError(Errors.java:60)
    at sqlj.runtime.error.RuntimeRefErrors.raise_NO_ROW_SELECT_INTO(RuntimeRefErrors.java:62)
    at oracle.wh.service.impl.runtime.runtime_access.RuntimeQueries.getDeploymentAdapterName(RuntimeQueries.java:1977)
    at oracle.wh.service.impl.runtime.EnvironmentUtils.getDeploymentAdapterName(EnvironmentUtils.java:470)
    at oracle.wh.service.impl.runtime.DeploymentSpecificationImpl.addToListCollection(DeploymentSpecificationImpl.java:840)
    at oracle.wh.service.impl.runtime.DeploymentSpecificationImpl.addToListCollection(DeploymentSpecificationImpl.java:818)
    at oracle.wh.service.impl.runtime.DeploymentSpecificationImpl.buildRuntimeObjectListCollection(DeploymentSpecificationImpl.java:568)
    at oracle.wh.service.impl.runtime.DeploymentSpecificationImpl.<init>(DeploymentSpecificationImpl.java:97)
    at oracle.wh.service.impl.runtime.RuntimePlatformServiceImpl.createDeploymentSpecification(RuntimePlatformServiceImpl.java:176)
    at oracle.wh.ui.runtime.application.WHRuntimeCommandGenerateDeploy.deployAsynchronous(WHRuntimeCommandGenerateDeploy.java:386)
    at oracle.wh.ui.runtime.application.WHRuntimeCommandGenerateDeploy.getValidGenerationResults(WHRuntimeCommandGenerateDeploy.java:1385)
    at oracle.wh.ui.runtime.application.WHRuntimeCommandGenerateDeploy.continueDeployment(WHRuntimeCommandGenerateDeploy.java:1929)
    at oracle.wh.ui.runtime.application.WHRuntimeCommandHandler.actionPerformed(WHRuntimeCommandHandler.java:368)
    at oracle.wh.service.sdk.OWBConsumer.dataItemAvailable(OWBInfoBus.java:381)
    at javax.infobus.DefaultController.fireItemAvailable(DefaultController.java:90)
    at javax.infobus.InfoBus.fireItemAvailable(InfoBus.java:989)
    at oracle.wh.service.sdk.OWBInfoBus.produce(OWBInfoBus.java:160)
    at oracle.wh.service.sdk.OWBInfoBus.produce(OWBInfoBus.java:76)
    at oracle.wh.ui.runtime.application.RuntimeProgressListener.notifyCompletion(RuntimeProgressListener.java:106)
    at oracle.wh.service.impl.generation.service.WhValidationGenerationTransaction.run(WhValidationGenerationTransaction.java:367)

  • ORA-01403: no data found in basic select into command

    Hi All,
    I have an interesting issue which is driving me crazy.
    I have a rather large procedure which I am utilizing in my apex environment which is returning the error: ORA-01403: no data found
    So i thought I would cut down the procedure and I have been able to isolate the below procedure:
    DECLARE
    entry_type varchar2(200);
    orig_ci_name varchar2(64);
    orig_window_start date;
    orig_window_end date;
    orig_audit_change_no varchar2(15);
    orig_mv_id number;
    BEGIN
       select ci_name, window_start, window_end,
       audit_change_no, mv_id into orig_ci_name, orig_window_start, orig_window_end,
       orig_audit_change_no, orig_mv_id
       from tivoli_impact_coles.maintenance_window
       where MV_ID = 1937;
       dbms_output.put_line(orig_ci_name || orig_window_start || orig_window_end || orig_audit_change_no || orig_mv_id);
    END;When I run this (cut down procedure) in the process part of my apex page I get the error. When I run it from a sql prompt it works fine. Any ideas?
    By the way the row exsists and the below is returned when i print the variables from the sql prompt:
    test_new_daily, 20100217 23:23:00, 20100218 03:30:00, 3434, 1937
    Thanks in advance,
    Brett

    DECLARE
    entry_type varchar2(200);
    orig_ci_name varchar2(64);
    orig_window_start date;
    orig_window_end date;
    orig_audit_change_no varchar2(15);
    orig_mv_id number;
    BEGIN
    select ci_name , window_start , window_end , audit_change_no , mv_id
    into orig_ci_name, orig_window_start, orig_window_end,orig_audit_change_no, orig_mv_id
    from tivoli_impact_coles.maintenance_window
    where MV_ID = 1937;
    -- dbms_output.put_line(orig_ci_name || orig_window_start || orig_window_end || orig_audit_change_no || orig_mv_id);
    HTP.P(orig_ci_name || orig_window_start || orig_window_end || orig_audit_change_no || orig_mv_id);
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    HTP.P('NO DATA FOUND');
    WHEN OTHERS THEN
    HTP.P(SQLERRM);
    END;

  • Regarding "select into" query and "no data found" exception

    So i have included the following into my procedure:
    select div_cd into c_div_cd
                   from division_tab d, emp_tab y
                   where d.div_name=y.div_text and y.emp_code=d.emp_code;
    and also an exception
    exception
    when no data found
    -- print something
    The above select query results into "no data found" and the control passes directly to the exception and prints something.
    How do I do the following?
    select div_cd into c_div_cd
                   from division_tab d, emp_tab y
                   where d.div_name=y.div_text and y.emp_code=d.emp_code;
    if c_div_cd is null then
    --enter this employee into some other table without raising an exception
    No need to write a code for an answer. Please just guide me with something I can incorporate or do.

    use explicit cursors
    DECLARE
    c_div_cd division_tab.div_cd%type;
    cursor c_div is
    select div_cd
    from division_tab d, emp_tab y
    where d.div_name=y.div_text and y.emp_code=d.emp_code;
    BEGIN
    open c_div;
    fetch c_div into c_div_cd;
    --You can either use c_div%NOTFOUND or c_div_cd is null in the below if condition to check the data
    -- Note if your select query returns multiple records then you have to do mutiple fetches for getting all records, so in that case your FETCH
    -- should be inside the LOOP statement
    if c_div_cd is null then
    --enter this employee into some other table without raising an exception
    end if;
    close c_div;
    EXCEPTION
    IF c_div%ISOPEN then
    close c_div;
    END IF;
    END;
    Regards
    JJ

  • No data Found when executing select within a function

    Hi
    I have a select statement based on the USER_ROLE_PRIVS view for a specific granted_role and user, If I execute the statement in SQL/Plus I obtain the required result, however if I put the same select in a function and excute the function signed on as the same user I get ora-00100 no data found. I have granted execute to public on the function. Is there a grant I have missed
    Any Help would be Great
    Tina

    1 CREATE OR REPLACE FUNCTION xyz
    2 Return number IS
      3  v_return number := 0;
      4  v_granted_role user_role_privs.granted_role%type;
      5  BEGIN
      6  Select granted_role
      7  into v_granted_role
      8  from USER_ROLE_PRIVS
      9  where Granted_Role = 'CONNECT'
    10  and username = user;
    11  v_return := 1;
    12  RETURN v_return;
    13  EXCEPTION
    14  when no_data_found then
    15  v_return := 0;
    16  RETURN v_return;
    17  when others then
    18  v_return:= 9;
    19  RETURN v_return;
    20* END;
    SQL> /
    Function created.
    SQL>  declare
      2   n number;
      3   begin
      4   n:=xyz;
      5   dbms_output.put_line('n'||n);
      6   end;
      7   /
    PL/SQL procedure successfully completed.
    SQL> set serveroutput on;
    SQL> /
    n1
    PL/SQL procedure successfully completed.Your supplied code works fine for me - Executing in owner schema. Then only authid current_user is missing in your code
    Edited by: Lokanath Giri on १९ अगस्त, २०१० ६:०२ अपराह्न

  • ORA-01403 NO DATA FOUND ERROR AFTER SELECTING PORTAL LINK TO CALL FORM

    I have a portal application link that I use to call a form. The field on this
    form gets populated based on a bind variable that is passed in by the link.
    This was working 2 weeks ago but now when I click on the link to call the form
    I am receiving the following error "AN UNEXPECTED ERROR OCCURRED ORA-01403 - NO
    DATA FOUND". This happens in more than one application where I set this type
    of link to call a form. Anyone have any ideas?!!

    Hi Andy,
    Thank you very much for your time!
    The fields in the form are all right. The fields get filled in perfectly in most of the cases, only those few rows don't :(
    However, now that you wrote of the process of row fetching, I think that maybe I have an idea of what is happening. My table has two primary keys (two fields together make the primary key, I don't know how it's called in English), one of them is a date. (I know that this is quite a bad practice, but, much to my regret, I cannot change it.) Now, this date is in YY-MON-DD format, which is used by my language.
    One of this dates is from 1800's. As my report shows it, the year gets truncated to the last two character. APEX passes this value into the field of the form using varchar2, and when it tries to cast it back to YY-MON-DD format, then it supposes it's from 1900's instead of 1800's. With 19xx however it doesn't find my field.
    Does this sound logical? It seems logical to me, but I am a beginner... :(
    Still, if this is the core of the problem, it's most possibly not the only problem, because I have dates from 19xx which can't identify their rows... But I am suspicious because of these date things. If you have any idea then please let me know.
    Thanks,
    Eszter

  • ORA-01403: no data found error hile inserting into a table

    Hi,
    I am populating a PL/SQL table(Array) with the data. From that array inserting into a Actual table. Before inserting am checking array count. Array count is greater than 0. But I am getting "ORA-01403: no data found" exception. I am not getting why this error is displaying.
    Please someone help me. Below is the code.
    CREATE OR REPLACE PROCEDURE XXDL_TEST_INSERT
    IS
    BEGIN
       IF  t_array.count> 0 THEN
        FND_FILE.PUT_LINE (FND_FILE.LOG, t_array.count);
        FOR i IN t_array.FIRST..t_array.LAST
        LOOP
            INSERT INTO XXDL_TEST
            VALUES(t_array(i).name )
      END LOOP;
    END IF;
    EXCEPTION
      WHEN OTHERS THEN
        FND_FILE.PUT_LINE (FND_FILE.LOG,SQLERRM);
    END;Thanks
    Alaka

    It looks like your Array is sparsely populated:
    SQL> DECLARE
      2    TYPE l_tab_type IS TABLE OF VARCHAR2(10)
      3      INDEX BY BINARY_INTEGER;
      4    l_tab l_tab_type;
      5  BEGIN
      6    l_tab(1) := 'A';
      7    l_tab(2) := 'B';
      8    l_tab(3) := 'C';
      9    FOR i IN l_tab.FIRST .. l_tab.LAST LOOP
    10      dbms_output.put_line(l_tab(i));
    11    END LOOP;
    12  END;
    13  /
    A
    B
    C
    PL/SQL procedure successfully completed.
    SQL>
    SQL> DECLARE
      2    TYPE l_tab_type IS TABLE OF VARCHAR2(10)
      3      INDEX BY BINARY_INTEGER;
      4    l_tab l_tab_type;
      5  BEGIN
      6    l_tab(1) := 'A';
      7    l_tab(3) := 'B';
      8    l_tab(4) := 'C';
      9    FOR i IN l_tab.FIRST .. l_tab.LAST LOOP
    10      dbms_output.put_line(l_tab(i));
    11    END LOOP;
    12  END;
    13  /
    A
    DECLARE
    ERROR at line 1:
    ORA-01403: no data found
    ORA-06512: at line 10Edited by: JS1 on Apr 11, 2009 8:59 AM
    You should also be using the FORALL syntax with INDICES OF. Check out The Docs

  • Using SELECT INTO statement to transfer data from one DB to another?

    Hello,
    I need to move data from an SAP table to another downstream SQL server box without flat file in between. I have set up the DBCON interface, so that my ABAP code on SAP can connect to the remote SQL Server, then I can run INSERT command as Native SQL inside the ABAP.
    However, INSERT has performance problem. The best performer as I can find is SELECT INTO statement. But then I am stuck at how to use SELECT INTO to query my local SAP table and send (via INTO) to remote database. I am not even sure whether I should use Open SQL or Native SQL.
    Any suggestion? BTW, I understand the limitation of Native SQL, but we are OK to use it.
    Thanks!

    It appears that this is some kind of migration project due to the scope of the data contained in the single file? If so whatever you do is like ly to be trow away once the migration of data is completed.
    You have a couple of options:
    1) Get the data extracted from HFM in multiple files instead of one bulk file, broken down by scanario,year & period
    2) Take the single data dump file produced by FDM and manipulate it yourself to get the data in a more usuable format for processing through FDM.
    Option 2 could be achieved via any ETL tool or a custom file parsing script. What may be more attractive to you and allow you to fully leverage your investment in FDM is that you could use the PULL adapter that ships as part of the FDM adapter suite to perform this transformation exercise. The PULL adapter takes a flat file input and allows you to use all the in built functionality of FDM to transform it and output a modified flat file (or series of flat files). You could use it to produce multioload files or a series of files broken down by scenario,year,period.
    Whatever you do I would suggest that break the single data file down into smaller chunks as this will help with the iterative debugging process you will inevitably have to undetake whislt migrating the data to the new application.

  • IU Elim. "No data found for processing using current selection conditions""

    Dear Experts,
    While Executing task of Interunit elimination  in Consolidation Montior  I am getting Message "No data found for processing using current selection conditions"
    Ex. is
    A)
    In Unit X
    GL (399999) Account     Dr. 65000 (Customer Recon. Ac.)   (with Trading Parter X)
    GL (499999) Rev.A/c           65000 (with Trading Parter X)
    In Unit Y
    GL (199999) Exp. A/c     Dr. 65000   (with Trading Parter Y)
    GL (299999).Account           65000 (Vendor Recon. Ac.) (with Trading Parter Y)
    B) GLs in info cube in 0FIGL_C01 are :-
    GL Account---CCode--Trading PartnerDebit--
    Credit
    199999--YY65000-----00000
    299999--YY00000-----65000
    399999--XX65000-----00000
    499999--XX00000-----65000
    In COnsolidation WorkBench
    1) I have created Document Type
    2) Method-
      In  General Tab
       a) Two SIded Selection
        b) Per Transaction Currency Selected
    In Selection Tab
    1St Selection
    GL Account = 299999 (Customer Recon. Account)
    Company    = X
    Trading Partner = X
    1St Selection
    GL Account = 399999 (Vendor Recon. Account)
    Company    = Y
    Trading Partner = Y
    Difference Tab
    a) Post Diff to "Unit from Selection 1"
    b) Key Figure "Period Value GC
    c) Check Limit Per Difference Row
    Other Differnce
    GL Account = 100099 (Other GL)
    Currencyce Diff
    GL Account = 100510 (Other GL)
    Question :-
    1) Is the posting is appropriate and does it attracts IU Elimination?
    2) The Infocube Details are correct?
    3) Any Config issue
    May any one suggest, Why Am I not able to get the data?
    Thanks
    Rakesh Shrivastav

    Dear Sir,
    Following are the View at my end in context to your suggestion
    1. check the BCS totals data to ensure trading partner is included.
    THis is the view of Source Info Cube 0FIGL_C01
    GL Account---CCode--Trading PartnerDebit--
    Credit
    199999--YY65000-----00000
    299999--YY00000-----65000
    399999--XX65000-----00000
    499999--XX00000-----65000
    2. Execute the task for the cons group that includes both cons units X and Y
    The COns Group Is XYZ
    X- Cons Unit
    Y- Cons Unit
    In Cons Monitor I am executing Test run at XYZ level
    3. Although the trading partner for cons unit X should be Y and vice versa, the elimination should still occur with the cons unit X and trading partner X records.
    Same as the query description
    4. make sure that the items 199999, 299999, 399999 and 499999 are included in the elimination method for either selection 1 or selection 2.
    The Method Selection Tab View is
    1St Selection
    GL Account = 299999,199999
    Company = Y
    TP = Y
    2Nd Selection
    GL Account = 399999,499999
    Company = X
    TP = X
    What is your View On That?

  • How to SELECT * into a SQL table incremntally by date?

    I have a SQL Server table called "tblProducts".
    Sometimes I backup this table by making a copy of it with this simple query:
    SELECT *
    INTO [test01].[dbo].[tblProducts_20141206]
    FROM [test01].[dbo].[tblProducts]
    Every time when making a backup, the date is included in the table name.
    I would like to create a SQL Job that runs this kind of query once every week.
    Is it possible to maybe in a stored procedure or declaring a variable to achieve this that allows the backed-up table name to be named like [tblProducts_todaysDate]?
    Thanks.

    hi ,dchencm
    i just want to point out the some bad effect of this pratice
    first point is
    when your db has be corrupt,your backup out of work
    i think you should backup your table to other db ensure that when your db has be corrupt you still have real backup
    just like
    SELECT *
    INTO [test01_backup].[dbo].[tblProducts_20141206]
    FROM [test01].[dbo].[tblProducts]
    another point is your pratice is total amount of backup not  incremental backup
    when your table  become bigger and bigger ,and then the number of record reach several million or several ten million or several hundred million, you must import all  data the table have
    so, this is not a good idea
    i just suggest  apply replication or logshipping etc to copy the diff data the table proceded is the better
     the steps of detail  as following
    step 1
    USE [test01]
    GO
    /****** 对象: StoredProcedure [dbo].[sp_ImportBackupData] 脚本日期: 12/25/2010 16:47:49 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE PROCEDURE [dbo].[sp_importbackupdata]
    AS
    BEGIN
    BEGIN
    DECLARE @date DATETIME ,
    @sql VARCHAR(1000)
    SET @date = GETDATE()
    SET @sql = 'SELECT * INTO [test01].[dbo].[tblProducts_'
    + CONVERT(VARCHAR(8), @date, 112)
    + '] FROM [test01].[dbo].[tblProducts]'
    EXEC (@Sql)
    END
    END
    step 2
    USE [msdb]
    GO
    /****** 对象: Job [import data] 脚本日期: 02/22/2011 09:22:44 ******/
    BEGIN TRANSACTION
    DECLARE @ReturnCode INT
    SELECT @ReturnCode = 0
    /****** 对象: JobCategory [Database Engine Tuning Advisor] 脚本日期: 02/22/2011 09:22:44 ******/
    IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'Database Engine Tuning Advisor' AND category_class=1)
    BEGIN
    EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'Database Engine Tuning Advisor'
    IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    END
    DECLARE @jobId BINARY(16)
    EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'sp_importbackupdata',
    @enabled=1,
    @notify_level_eventlog=0,
    @notify_level_email=0,
    @notify_level_netsend=0,
    @notify_level_page=0,
    @delete_level=0,
    @description=N'sp_importbackupdata',
    @category_name=N'Database Engine Tuning Advisor',
    @owner_login_name=N'sa', @job_id = @jobId OUTPUT
    IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    /****** 对象: Step [import data] 脚本日期: 02/22/2011 09:22:44 ******/
    EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'import data',
    @step_id=1,
    @cmdexec_success_code=0,
    @on_success_action=1,
    @on_success_step_id=0,
    @on_fail_action=2,
    @on_fail_step_id=0,
    @retry_attempts=0,
    @retry_interval=0,
    @os_run_priority=0, @subsystem=N'TSQL',
    @command=N'exec sp_importbackupdata',
    @database_name=N'sss',
    @flags=0
    IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
    IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'import frequency',
    @enabled=1,
    @freq_type=8,
    @freq_interval=2,
    @freq_subday_type=1,
    @freq_recurrence_factor=1,
    @active_start_time=20000
    IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
    IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    COMMIT TRANSACTION
    GOTO EndSave
    QuitWithRollback:
    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
    EndSave:
    the schedule time is 2 am  in the midnight  every monday 
    Certainly, you can edit it for yourself

  • I am getting ORA-01403: no data found error while calling a stored procedur

    Hi, I have a stored procedure. When I execute it from Toad it is successfull.
    But when I call that from my java function it gives me ORA-01403: no data found error -
    My code is like this -
    SELECT COUNT(*) INTO L_N_CNT FROM TLSI_SI_MAST WHERE UPPER(CUST_CD) =UPPER(R_V_CUST_CD) AND
    UPPER(ACCT_CD)=UPPER(R_V_ACCT_CD) AND UPPER(CNSGE_CD)=UPPER(R_V_CNSGE_CD) AND
    UPPER(FINALDEST_CD)=UPPER(R_V_FINALDEST_CD) AND     UPPER(TPT_TYPE)=UPPER(R_V_TPT_TYPE);
         IF L_N_CNT >0 THEN
              DBMS_OUTPUT.PUT_LINE('ERROR -DUPlicate SI-1');
              SP_SEL_ERR_MSG(5,R_V_ERROR_MSG);
              RETURN;
         ELSE
              DBMS_OUTPUT.PUT_LINE('BEFORE-INSERT');
              INSERT INTO TLSI_SI_MAST
                   (     CUST_CD, ACCT_CD, CNSGE_CD, FINALDEST_CD, TPT_TYPE,
                        ACCT_NM, CUST_NM,CNSGE_NM, CNSGE_ADDR1, CNSGE_ADDR2,CNSGE_ADDR3,
                        CNSGE_ADDR4, CNSGE_ATTN, EFFECTIVE_DT, MAINT_DT,
                        POD_CD, DELVY_PL_CD, TRANSSHIP,PARTSHIPMT, FREIGHT,
                        PREPAID_BY, COLLECT_BY, BL_REMARK1, BL_REMARK2,
                        MCC_IND, NOMINATION, NOTIFY_P1_NM,NOTIFY_P1_ATTN , NOTIFY_P1_ADDR1,
                        NOTIFY_P1_ADDR2, NOTIFY_P1_ADDR3, NOTIFY_P1_ADDR4,NOTIFY_P2_NM,NOTIFY_P2_ATTN ,
                        NOTIFY_P2_ADDR1,NOTIFY_P2_ADDR2, NOTIFY_P2_ADDR3, NOTIFY_P2_ADDR4,
                        NOTIFY_P3_NM,NOTIFY_P3_ATTN , NOTIFY_P3_ADDR1,NOTIFY_P3_ADDR2, NOTIFY_P3_ADDR3,
                        NOTIFY_P3_ADDR4,CREATION_DT, ACCT_ATTN, SCC_IND, CREAT_BY, MAINT_BY
                        VALUES(     R_V_CUST_CD,R_V_ACCT_CD,R_V_CNSGE_CD,R_V_FINALDEST_CD,R_V_TPT_TYPE,
                        R_V_ACCT_NM,R_V_CUST_NM ,R_V_CNSGE_NM, R_V_CNSGE_ADDR1,R_V_CNSGE_ADDR2, R_V_CNSGE_ADDR3,
                        R_V_CNSGE_ADDR4,R_V_CNSGE_ATTN,     R_V_EFFECTIVE_DT ,SYSDATE, R_V_POD_CD,R_V_DELVY_PL_CD,R_V_TRANSSHIP ,R_V_PARTSHIPMT , R_V_FREIGHT,
                        R_V_PREPAID_BY ,R_V_COLLECT_BY ,R_V_BL_REMARK1 ,R_V_BL_REMARK2,R_V_MCC_IND,
                        R_V_NOMINATION,R_V_NOTIFY_P1_NM, R_V_NOTIFY_P1_ATTN, R_V_NOTIFY_P1_ADD1, R_V_NOTIFY_P1_ADD2,
                        R_V_NOTIFY_P1_ADD3, R_V_NOTIFY_P1_ADD4, R_V_NOTIFY_P2_NM, R_V_NOTIFY_P2_ATTN, R_V_NOTIFY_P2_ADD1,
                        R_V_NOTIFY_P2_ADD2, R_V_NOTIFY_P2_ADD3, R_V_NOTIFY_P2_ADD4, R_V_NOTIFY_P3_NM, R_V_NOTIFY_P3_ATTN,
                        R_V_NOTIFY_P3_ADD1, R_V_NOTIFY_P3_ADD2, R_V_NOTIFY_P3_ADD3, R_V_NOTIFY_P3_ADD4,
                        SYSDATE,R_V_ACCT_ATTN,R_V_SCC_IND,R_V_USER_ID,R_V_USER_ID
                        DBMS_OUTPUT.PUT_LINE(' SI - REC -INSERTED');
         END IF;

    Hi,
    I think there is a part of the stored procedure you did not displayed in your post. I think your issue is probably due to a parsed value from java. For example when calling a procedure from java and the data type from java is different than expected by the procedure the ORA-01403 could be encountered. Can you please show the exact construction of the call of the procedure from within java and also how the procedure possible is provided with an input parameter.
    Regards, Gerwin

  • Unable to extract data from R/3 into BW 3.5

    I have just started learning BW. I am currently trying to upload data from R/3 into BW. I have tried uploading data into InfoCube , ODS, InfoObjects from R/3 and in all cases I am getting error messages. Please shed some light as the what am doing wrong......below are the steps that I have done
    For loading transaction data from R/3 in ODS
    1. Created view from VBAP and VBAK tables in R/3
    2. Created Transaction type DataSource in R/3 using RSO2 transaction
    3. Replicated above DataSource in BW under Source Systems. using 'Replicate DataSource'
    4. Created ODS object along the same lines as the above created view in R/3
    5.Created InfoSource and assigned the replicated DataSource
    6. Activated the Transfer Rules, Transfer Structure, Communivcation Structure
    7. Created Update Rules for ODS and activated them
    8. Created InfoPackage and started the Data Request
    The error message that I see in Monitor is as below
    Requests (messages): Everything OK
             Data request arranged
             Confirmed with: OK
    Extraction (messages): Missing messages
             Missing message: Request received
             Missing message: Number of sent records
             Missing message: Selection completed
    Transfer (IDocs and TRFC): Errors occurred
             Request IDoc : IDoc with errors added
    Processing (data packet): No data
    I am getting the same error message when I try InfoCube instead of ODS.
    Please let me know what is wrong
    Vidya

    I checked the 'Details' and 'Status' tab page in Monitor
    On Status Page it says
    Request still running
    Diagnosis
    No errors could be found. The current process has probably not finished yet.
    System response
    The ALE inbox of the SAP BW is identical to the ALE outbox of the source system
    and/or
    the maximum wait time for this request has not yet run out
    and/or
    the batch job in the source system has not yet ended.
    Current status
    No Idocs arrived from the source system.
    On Details Tab page, it says
    Requests (messages): Everything OK
    Data request arranged
    Confirmed with: OK
    Extraction (messages): Missing messages
    Missing message: Request received
    Missing message: Number of sent records
    Missing message: Selection completed
    Transfer (IDocs and TRFC): Errors occurred
    Request IDoc : IDoc with errors added
    Processing (data packet): No data

  • "no data found" run-time error masking SQL/report mismatch

    Hi all,
    At last, figured out a vexing problem and wondering if anyone else either:
    a) has also hit the problem, and hopefully
    b) has figured out a clever way around it.
    Namely, in our AppEx apps, we rely on SQL query generation from PL/SQL packaged functions. This "best practice" promotes reuse, automated testing, etc. Great idea - works great.
    However, we've repeatedly come across a situation where we go to run a page with a report on it only to get a "report error: ORA-01403: no data found" message where the report should be. Not much to go on. After trial and error, it turns out that simply going to the Region Definition page (where the PL/SQL function call is defined) and clicking the "Apply Changes" button cleared the problem up.
    Mystifying because the actual SQL query generated by the PL/SQL is valid (we've got a nightly testing job that pulls the PL/SQL function calls out of the AppEx metadata tables, executes them to get back the SQL and then validates the SQL).
    Turns out this problem looks to be a result of columns changing in the actual SQL itself, and hence not matching up to the Region Attributes (column names, one assumes) that AppEx knows about. Simply clicking Apply Changes causes AppEx to validate the returned query and then it adjusts the column attributes (one assumes) so that things match up.
    So - the $64,000 question(s):
    1) Are there any cool AppEx APIs to be able to try and detect this situation? Given an app of middling complexity (50-100 pages, each with various queries/reports), this is not an attractive issue to deal with manually.
    2) Any cool AppEx APIs to fix, or auto-sync these situations? (Essentially programmatically calling the "Apply Changes" button if you will).
    At a minimum, it would be great if AppEx could be updated to put out some kind of more informative error message when this occurs - maybe something along the lines of "Region Attributes Do Not Match Data Returned from Query", or something like that at least.
    Thanks for any input/ideas,
    Jim C.

    Thanks to all for your prompt responses.
    Vikas actually did me the favor of pretty much clarifying my info for me (tks Vikas). Yes, to all the above. It's PL/SQL code generating a SQL query, so 1 is (a); we want to use query-specific columns so it is (2a). And yes, the whole problem is that the something does change to cause the SELECT statement column list to change...nature of the beast, so "don't do that" doesn't really help here.
    Scott - sorry, should have been more explicit. Basically, we have a PL/SQL function behind a report that returns a SQL statement for the report. If that PL/SQL code changes to add a new column to the report (without going to the corresponding Report Attributes page and clicking the "Apply Changes" button to get AppEx to revalidate the query), then you wind up with this "no data found" error msg, which doesn't exactly point you to the root of the problem.
    It seems as though the "parse at compile-time" is really what's going on here. There must be some kind of "run-time" check going on as well, that is resulting in the "no data found" message. Seems as though it ought to be fairly straightforward to add some kind of check at run-time to handle that exception a little cleaner. Is there an official process to register a "Request for Process Enhancement" for AppEx to do this?
    In the meantime, thank you Vikas for the pointer to the APEX_APPLICATION_PAGE_RPT_COLS view - that looks like it will do the trick nicely. Given that, we can now add logic to our nightly "app tester" job that can compare what columns AppEx expects to find in a given report (for a given page) with the actual SQL (coming back from the PL/SQL function call) to essentially "validate" the AppEx meta data and at least let us know when these things get out of sync.
    BTW - if anyone would be interested in the actual contents of that "app tester" logic, I'd be happy to post it (someplace...here? Studio site?). It's basically just a PL/SQL block of code that currently runs in cron that just validates any SQL embedded in our app. (I suppose it is a little "hard-coded" since it does use our naming conventions for packages/functions to parse the PL/SQL calls from the Meta Data but it might still serve as a usefull starting point...) Since our AppEx app(s) sit on top of a database schema that is in fairly constant flux, we need the ability to know when somebody has changed something in the schema that needs to be accounted for in AppEx. The job primarily just parses the AppEx meta data to find PL/SQL function calls that return SQL, executes that PL/SQL to get the generated SQL, then just validates that SQL and reports back any invalid SQL calls. Perhaps we're in some unusual development environment (15-20 people working on a database schema with 700-800 tables/views) but it seems as though it would be fairly easy, for anybody using PL/SQL to generate SQL (which is a GREAT and powerful thing, by the way - thanks to whoever thought that up in AppEx land) to run into this issue.
    Jim C.

  • No Data Found Exception in bulk updates

    I am trying to catch no data found exception in bulk updates when it does not find a record to update in the forall loop.
    OPEN casualty;
    LOOP
    FETCH casulaty
    BULK COLLECT INTO v_cas,v_adj,v_nbr
    LIMIT 10000;
    FORALL i IN 1..v_cas.count
    UPDATE tpl_casualty
         set casualty_amt = (select amt from tpl_adjustment where cas_adj = v_adj(i))
         where cas_nbr = v_nbr(i);
    EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output.put_line('exception')
    I get this error at the line where i have exception:
    PLS-00103: Encountered the symbol "EXCEPTION" when expecting one of the following:
    begin case declare end exit for goto if loop mod null pragma
    raise return select update while with <an identifier>
    <a double-quoted delimited-identifier> <a bind variable> <<
    close current delete fetch lock insert open rollback
    savepoint set sql execute commit forall merge pipe
    Can someone pls direct me on how to get around this?
    If I do not handle this exception, the script fails when it attempts to update a record that does not exist and the error says : no data found exception.
    Thanks for your help.
    Edited by: user8848256 on Nov 13, 2009 6:15 PM

    No Data Found isn't an exception raised when an UPDATE cannot find any records to process.
    SQL%ROWCOUNT can be used to determine the number of rows affected by an update statement, but if 0 rows are updated then no exception will be raised (it's just not how things work).
    If you post your actual CURSOR (casualty) declaration, it's quite possible we can help you create a single SQL statement to meet your requirement (a single SQL will be faster than your current implementation).
    Have you looked in to using the MERGE command?

  • No Data Found: Exception in SQL inside PL/SQL block

    Hi Friends
    I am trying to execute an SQL SELECT stmt inside a PL/SQL block. But when i execute the procedure, it gives me No Data Found Exception.
    I know it is because no row is fetched in the query, but the condition of the SELECT query i have specified is being satisfied, i have checked it by running it on the SQL prompt.
    But somehow, it is not running from inside the PL/SQL procedure.Can anybody help me out on this as to why is this happening?? I am giving my code for reference and have Highlighted the Query inside it:
    CREATE OR REPLACE procedure insert_sfdc_account
    as
    --DECLARE
    CURSOR C1 IS
    SELECT customer_code, name1, name2, name3, name4, phone_number, fax, web_address, industry_sector, customer_profile, customer_type,
    address, city, postal_code, country_key, zzcust_type, vat_code
    FROM load_cust_general
    WHERE account_group = 'ZSIT';
    v_cust_cur c1%ROWTYPE;
    -- type sales_tab is table of load_cust_sales_area%rowtype;
    v_sales_area load_cust_sales_area%ROWTYPE;
    -- v_sales_area sales_tab;
         v_salesorg varchar2(10);
         v_sales_district varchar2(10);
         v_salesoff varchar2(10);
         v_custgrp varchar2(10);
         v_salesgrp varchar2(10);
    v_type varchar2(20);
    v_nature varchar2(10);
    v_partner_code varchar2(10);
    v_parent_cust varchar2(20);
    v_credit_blk varchar2(20);
    BEGIN
    open c1;
    loop
    fetch c1 into v_cust_cur;
    exit when c1%NOTFOUND;
    for i in (SELECT customer_code, salesorg from load_cust_partner
    where customer_code = v_cust_cur.customer_code ) LOOP
    dbms_output.put_line(v_cust_cur.customer_code );
                        SELECT partner_code into v_partner_code from load_cust_partner
    where customer_code = i.customer_code and salesorg = i.salesorg and partner_function = 'Z1';
    dbms_output.put_line(v_partner_code||i.customer_code);
    SELECT salesorg, sales_district, salesoff, salesgrp, custgrp INTO v_salesorg, v_sales_district, v_salesoff, v_salesgrp, v_custgrp FROM load_cust_sales_area
              WHERE customer_code = i.customer_code and salesorg = i.salesorg;
                   dbms_output.put_line(v_salesorg||i.salesorg);
                        SELECT parent_customer INTO v_parent_cust from load_cust_hierarchy
    WHERE customer_code = i.customer_code and salesorg = i.salesorg and hierarchy_type = 'G'; dbms_output.put_line(v_parent_cust);
                        SELECT credit_block INTO v_credit_blk from load_cust_company_cod
              WHERE customer_code = i.customer_code;
    dbms_output.put_line(v_credit_blk);
    for j in (SELECT account_group, customer_type from load_cust_general
    where customer_code IN (select customer_code from load_cust_partner
                                  where partner_code = i.customer_code and salesorg = i.salesorg and partner_function = 'ZS'))
                                                      LOOP
    -- exit when j%NOTFOUND;
         dbms_output.put_line(j.account_group);
    if (j.account_group = 'ZDIS') THEN
    v_type := 'DISAC';
              v_nature := '06';
         --     EXIT ;
    else
    v_type := 'SPACC';
    v_nature := '01';
    END IF;
    dbms_output.put_line(v_type||' '||v_nature);
    END LOOP;
    INSERT INTO sfdc_account
              (SAP_ACCOUNT_ID__C, NAME, TYPE, RECORDTYPEID, PARENTID, PHONE, FAX, WEBSITE, OWNERID, MARKETING_DOMAIN__C,
    INDUSTRIAL_SECTOR__C, ABC_CLASSIFICATION__C, NAME_1__C, NAME_2__C, NAME_3__C, NAME_4__C, PAYMENT_STATUS__C,
    CUSTOMER_GROUP__C, ADDRESS_STREET__C, CITY__C, POSTAL_CODE__C, COUNTRY__C, SALES_OFFICE__C, SALESORG__C,
    SALESDISTRICT__C, SALESGROUP__C, NATURE__C, VATCODE__C)
    VALUES((i.customer_code||i.salesorg), (v_cust_cur.Name1||' '||v_cust_cur.name2), ' ', v_type, v_parent_cust,
    v_cust_cur.phone_number, v_cust_cur.fax, v_cust_cur.web_address, v_partner_code, SUBSTR(v_cust_cur.industry_sector,1,2),
    v_cust_cur.industry_sector, v_cust_cur.customer_profile, v_cust_cur.name1, v_cust_cur.name2, v_cust_cur.name3,
    v_cust_cur.name4, v_credit_blk, v_custgrp, v_cust_cur.address, v_cust_cur.city, v_cust_cur.postal_code,
    v_cust_cur.country_key, v_salesoff, v_salesorg, v_sales_district,
    v_salesgrp, v_nature, v_cust_cur.vat_code);
    end loop;
    end loop;
    CLOSE c1;
    -- Delete data from Load Table
    -- EXECUTE IMMEDIATE 'TRUNCATE TABLE load_cust_general';
    /* truncate table load_cust_partner;
    truncate table load_cust_hierarhy;
    truncate table load_cust_sales_area;
    truncate table load_cust_company_cod;
    commit;
    exception
    when others then
    raise_application_error( -20001, substr( sqlerrm, 1, 150 ) );
    END;
    Kindly Help.....
    Thanks and Regards

    Create the procedure again and execute it in SQL*Plus environment and paste the output:
    CREATE OR REPLACE procedure insert_sfdc_account
    as
    --DECLARE
    CURSOR C1 IS
    SELECT customer_code, name1, name2, name3, name4, phone_number, fax, web_address, industry_sector, customer_profile, customer_type,
    address, city, postal_code, country_key, zzcust_type, vat_code
    FROM load_cust_general
    WHERE account_group = 'ZSIT';
    v_cust_cur c1%ROWTYPE;
    -- type sales_tab is table of load_cust_sales_area%rowtype;
    v_sales_area load_cust_sales_area%ROWTYPE;
    -- v_sales_area sales_tab;
    v_salesorg varchar2(10);
    v_sales_district varchar2(10);
    v_salesoff varchar2(10);
    v_custgrp varchar2(10);
    v_salesgrp varchar2(10);
    v_type varchar2(20);
    v_nature varchar2(10);
    v_partner_code varchar2(10);
    v_parent_cust varchar2(20);
    v_credit_blk varchar2(20);
    BEGIN
    open c1;
    loop
    fetch c1 into v_cust_cur;
    exit when c1%NOTFOUND;
    for i in (SELECT customer_code, salesorg from load_cust_partner
    where customer_code = v_cust_cur.customer_code ) LOOP
    SELECT partner_code into v_partner_code from load_cust_partner
    where customer_code = i.customer_code and salesorg = i.salesorg and partner_function = 'Z1';
    SELECT salesorg, sales_district, salesoff, salesgrp, custgrp INTO v_salesorg, v_sales_district, v_salesoff, v_salesgrp, v_custgrp FROM load_cust_sales_area
    WHERE customer_code = i.customer_code and salesorg = i.salesorg;
    dbms_output.put_line('Customer_Code : '|| i.customer_code);
    dbms_output.put_line('SalesOrg : '|| i.salesorg);
    SELECT parent_customer INTO v_parent_cust from load_cust_hierarchy
    WHERE customer_code = i.customer_code and salesorg = i.salesorg and hierarchy_type = 'G';
    dbms_output.put_line('Successfully Executed SQL st. Error is somewhere else');
    SELECT credit_block INTO v_credit_blk from load_cust_company_cod
    WHERE customer_code = i.customer_code;
    for j in (SELECT account_group, customer_type from load_cust_general
    where customer_code IN (select customer_code from load_cust_partner
    where partner_code = i.customer_code and salesorg = i.salesorg and partner_function = 'ZS'))
    LOOP
    -- exit when j%NOTFOUND;
    if (j.account_group = 'ZDIS') THEN
    v_type := 'DISAC';
    v_nature := '06';
    -- EXIT ;
    else
    v_type := 'SPACC';
    v_nature := '01';
    END IF;
    END LOOP;
    INSERT INTO sfdc_account
    (SAP_ACCOUNT_ID__C, NAME, TYPE, RECORDTYPEID, PARENTID, PHONE, FAX, WEBSITE, OWNERID, MARKETING_DOMAIN__C,
    INDUSTRIAL_SECTOR__C, ABC_CLASSIFICATION__C, NAME_1__C, NAME_2__C, NAME_3__C, NAME_4__C, PAYMENT_STATUS__C,
    CUSTOMER_GROUP__C, ADDRESS_STREET__C, CITY__C, POSTAL_CODE__C, COUNTRY__C, SALES_OFFICE__C, SALESORG__C,
    SALESDISTRICT__C, SALESGROUP__C, NATURE__C, VATCODE__C)
    VALUES((i.customer_code||i.salesorg), (v_cust_cur.Name1||' '||v_cust_cur.name2), ' ', v_type, v_parent_cust,
    v_cust_cur.phone_number, v_cust_cur.fax, v_cust_cur.web_address, v_partner_code, SUBSTR(v_cust_cur.industry_sector,1,2),
    v_cust_cur.industry_sector, v_cust_cur.customer_profile, v_cust_cur.name1, v_cust_cur.name2, v_cust_cur.name3,
    v_cust_cur.name4, v_credit_blk, v_custgrp, v_cust_cur.address, v_cust_cur.city, v_cust_cur.postal_code,
    v_cust_cur.country_key, v_salesoff, v_salesorg, v_sales_district,
    v_salesgrp, v_nature, v_cust_cur.vat_code);
    end loop;
    end loop;
    CLOSE c1;
    -- Delete data from Load Table
    -- EXECUTE IMMEDIATE 'TRUNCATE TABLE load_cust_general';
    /* truncate table load_cust_partner;
    truncate table load_cust_hierarhy;
    truncate table load_cust_sales_area;
    truncate table load_cust_company_cod;
    commit;
    exception
    when others then
    raise_application_error( -20001, substr( sqlerrm, 1, 150 ) );
    END;
    SQL> set serveroutput on
    SQL> exec insert_sfdc_account;

Maybe you are looking for

  • Modification in WAD (BI70)

    hi experts, i use wad to show my report, i want to change the value in a field to another text, for example, the table is: field1   field2  field3 a1       1        b1 a2       0        b2 a3       1        b3 i want to change it to display field1  

  • Logic for user defined function in java language.

    Hi Guys, I want to use a "&" function in below code & include vafrdate.substring(130,132).equals("01"). if ( delperiod.substring(4,6).equals("01") ) Need your help to include & function in java code. In layman language , i need, if ( delperiod.substr

  • Problem in Importing  DC in Web dynpro

    Hi All, I am not able to import a DC project in web dynpro. I followed the help guide according to which i opened the development configuration perspective and local view inside that. Problem is that the DC folder which is to be imported is not visib

  • SO F-G ANNOYED!!!! Playback is all screwed up. Audio lags as well as stuttering.

    Ever since the upgrade, none of my videos will playback correctly.  The audio lags behind by 8 - 10 seconds and there's this constant clicking noise in the background.  Apple FIX THIS!!!!!!!!!!!

  • Trial version of Premiere  Pro CC won't download

    I get a Launch Application Box like below but it does nothing after...