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,
BrianThanks 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,
BrettDECLARE
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
Tina1 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
AlakaIt 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 ShrivastavDear 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
VidyaI 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 PMNo 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 RegardsCreate 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
-
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...