Getting - ORA-01403: no data found - When I Run expdp
Oracle database version 11.1.0.7.0 on Windows 32-bit.
When I run:
expdp system schemas=vms dumpfile=data_pump_dir:vms_bjw%u.dmp logfile=data_pump_dir:vms_bjw.log parallel=2
Connected to: Oracle Database 11g Enterprise Edition Release *11.1.0.7.0* - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-31626: job does not exist
ORA-31637: cannot create job SYS_EXPORT_SCHEMA_01 for user SYSTEM
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPV$FT_INT", line 736
ORA-39080: failed to create queues "" and "" for Data Pump job
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPC$QUE_INT", line 1665
ORA-01403: no data found
I turned on tracing like this:
1.) Set the Error Stack 1403 to know exactly which SQL is failing:-
SQL> alter system set events '1403 trace name errorstack level 3';
Re-ran the datapump export to reproduce the error then disable the events.
SQL> alter system set events '1403 trace name errorstack off';
The trace file, oddly enough, shows that this is the failing SQL:
Error Stack Dump
ORA-01403: no data found
Current SQL Statement for this session (sql_id=3n58uzvnuw2hj) -----
SELECT VALUE FROM V$NLS_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET'
Under that, I get the call stack.
I ran this SQL manually and I get:
SQL> SELECT VALUE FROM V$NLS_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';
VALUE
AL32UTF8
Any ideas as to why I'm getting the ORA-01403 when I run expdp?
Thank you
Hello,
Your error looks like what is descibed into the Metalink Note 345198.1.
But this note apply to 10.1.0.4 not to 11.1.0.7.
So, you should open an issue to My Oracle Support.
Best regards,
Jean-Valentin
Similar Messages
-
ORA-01403: no data found when calling a web service from HTMLDB
I am working through Section 6 How to Implement a Web Service of the HTML DB 2 Day Developer tutorial. I can get the first example to work but not the second one. I am able to add the web reference and create the form and report. However, when I run the page and click submit, I get ORA-01403: no data found.
When I test the service, this is what shows in the Message Request:
<?xml version='1.0' encoding='UTF-8'?><SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Header><namesp1:Header xmlns:namesp1="http://www.xignite.com/services/"><namesp1:Username xsi:type="xsd:string"></namesp1:Username><namesp1:Password xsi:type="xsd:string"></namesp1:Password><namesp1:Tracer xsi:type="xsd:string"></namesp1:Tracer></namesp1:Header></SOAP-ENV:Header><SOAP-ENV:Body><namesp1:ListFuturesByExchange xmlns:namesp1="http://www.xignite.com/services/"><namesp1:Exchange xsi:type="xsd:string">NYMEX</namesp1:Exchange></namesp1:ListFuturesByExchange></SOAP-ENV:Body></SOAP-ENV:Envelope>
Nothing shows in the Message Response.
I have also tried to call a simple web service that I created in .NET. It exhibits the same behavior. I am able to add the reference and create the form. But when I click the submit button, I get ORA-01403: no data found.
Windows 2000
HTMLDB 2.0.0.00.49
Oracle9i 9.2.0.6.0
Any help will be greatly appreciated.I'm having a similar problem!, Although, distressing as it is to observe the lack of response this thread has had for 9 months, I'm still seeking help here!
I created a web service reference according to the following WSDL : "http://OgAppExpress:[email protected]:5555/invoke/OgAdminUtils.pub:WSDL_HLR" (operation name="getSubscriberInfoByMSISDN") and a form on that web service, all of which went very nicely. But! When I ran the form, inserted the value ("3546933599") into the parameter and pressed submit.... => "ORA-01403: no data found"
The debug action displays very limited information and sheds no light on the problem :( Multiple attempts, on recreating the project from scratch, have resulted in the same utter failure! Needless to say, this nulls the affect of my Prozac proscription....
Is there anybody out there who can help me and defend APEX's reputation? -
When merging workspace I get ORA-01403: no data found error in WMSYS.LT
Hi,
I am investigating an error in a remote system with very little info to go on apart from a stacktrace! This is what it says:
java.sql.SQLException: ORA-01403: no data found
ORA-06512: at "WMSYS.LT", line 6028
ORA-06512: at line 1
The context is an attempt to merge a child workspace into LIVE (LIVE being its direct parent).
it is on Oracle Database 11.1.0.7.
Can you advise what this error means? I am unable to dig deeper into it because the PL-SQL source code for WMSYS.LT is wrapped.
thanks
SimonHi,
Are you able to get a standard trace of the error from the remote database? ora-1403 errors can come from a number of places, so an errorstack trace is usually needed to determine the cause.
Regards,
Ben -
Strange problem: ORA-01403: no data found when report has a sort
Hi,
I have a report which behaves very strangely but only for one particular user. The report runs fine when no columns are set as sort-by in the report attributes. As soon as I try and set a column to sort (any column, it doesn't matter) this user gets the error message:
failed to parse SQL query:
ORA-01403: no data found
appear where the report should be on the page. The rest of the page displays OK. No other users are affected. If I remove the sort then the report is OK for this user (unsorted though!)
The report is a structured query with custom column headings, nothing unusual, quite basic. I have tried exporting and reimporting the page but it doesn't fix it. Same behaviour for this particular page in our test system as well.
I could rebuild the page but I'd rather know what is wrong in case it happens to some other region.
Thanks,
SteveSteve,
The reports engine stores the sort settings in the user preferences. This is done so that when you return to a report, it maintains the earlier sort settings. Like in your response to the HTML DB studio posting, you would keep your report sorted by "Created On" descending or ascending even when you come back another time. It's save to remove those preferences; all that's going to happen is that your users will see the report using the report's default settings the next time they go to that page. I will try to investigate this problem further, whatever additional information you can provide, will be helpful,
Marc -
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 -
ORA-01403: no data found when displaying a value from an array
I have a very simple pl/sql procedure like below which gives an error
SQL> exec p_ks2;
BEGIN p_ks2; END;
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "KINASE.P_KS2", line 21
ORA-06512: at line 1
if i uncomment the for loop the procedure works ... the loop has nothing to do with my array or what i am doing after it..
could anyone help me to understand why i need a loop like that or what i am doing wrong when i am not having the loop there.
---- procedure
CREATE OR REPLACE
PROCEDURE p_ks2 as
TYPE mdata IS TABLE OF number INDEX BY BINARY_INTEGER;
data1 mdata;
k integer;
m number;
begin
data1(1) := 10;
data1(2) := 20;
data1(3) := 30;
data1(4) := 40;
data1(5) := 50;
k :=3;
--for mm in 10..11
--loop
-- m := mm;
--end loop;
dbms_output.put_line('value of data(' || k || '): ' || data1(k));
end;
/here is what i am trying.. when i do not have the for loop it fails. when I have the for loop it works eventhough for loop is really not doing anything related to my array.
and in 10.x both works without error.
I noticed you have the for loop uncommented when you posted the screen. Did it work when you have commented those lines out?
SQL> select * from v$version
2 ;
BANNER
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
SQL> CREATE OR REPLACE
2 PROCEDURE p_ks2 as
3
4 TYPE mdata IS TABLE OF number INDEX BY BINARY_INTEGER;
5 data1 mdata;
6 k integer;
7 m number;
8
9 begin
10 data1(1) := 10;
11 data1(2) := 20;
12 data1(3) := 30;
13 data1(4) := 40;
14 data1(5) := 50;
15
16 k :=3;
17 --for mm in 10..11
18 --loop
19 -- m := mm;
20 --end loop;
21
22 dbms_output.put_line('value of data(' || k || '): ' || data1(k));
23
24
25 end;
26 /
Procedure created.
SQL>
SQL> exec p_ks2;
BEGIN p_ks2; END;
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "KINASE.P_KS2", line 21
ORA-06512: at line 1
SQL>
SQL> CREATE OR REPLACE
2 PROCEDURE p_ks2 as
3
4 TYPE mdata IS TABLE OF number INDEX BY BINARY_INTEGER;
5 data1 mdata;
6 k integer;
7 m number;
8
9 begin
10 data1(1) := 10;
11 data1(2) := 20;
12 data1(3) := 30;
13 data1(4) := 40;
14 data1(5) := 50;
15
16 k :=3;
17 for mm in 10..11
18 loop
19 m := mm;
20 end loop;
21
22 dbms_output.put_line('value of data(' || k || '): ' || data1(k));
23
24
25 end;
26 /
Procedure created.
SQL> exec p_ks2;
value of data(3): 30
PL/SQL procedure successfully completed.
SQL> -
Getting ORA-01403: no data found while saving records
Hi,
I have a customized tabular form using APEX_ITEM API and I created a process to save the records as follows :
-- currently not doing any saving for debugging.
/* Formatted on 2009/03/18 14:52 (Formatter Plus v4.8.8) */
DECLARE
vclass_id NUMBER (10) := NULL;
vattribute_id NUMBER (10) := NULL;
vscore1st NUMBER (2, 1) := 0;
vscore2nd NUMBER (2, 1) := 0;
vrank1st NUMBER (1) := NULL;
vrank2nd NUMBER (1) := NULL;
vcomment VARCHAR2 (4000) := NULL;
BEGIN
FOR i IN 1 .. apex_application.g_f01.COUNT -- numberofline
LOOP
IF apex_application.g_f01 (i) = 2 -- score row
THEN
vclass_id := apex_application.g_f02 (i);
vattribute_id := apex_application.g_f02 (i);
vscore1st := apex_application.g_f05 (i);
vscore2nd := apex_application.g_f06 (i);
ELSIF apex_application.g_f01 (i) = 3
THEN -- rank row
vrank1st := apex_application.g_f05 (i);
vrank2nd := apex_application.g_f06 (i);
ELSIF apex_application.g_f01 (i) = 4
THEN -- comment row
vcomment := apex_application.g_f04 (i);
END IF;
END LOOP;
END;1. Without doing any saving, I am getting NoDataFound error. Can anyone enlighten me why?
2. How can I print the value into the page for debugging?
THanks.HI Denes,
Thanks for replying :)
I debugged this, and it's due to my array list (f01,f02,..) is not having the same number of value.
The following is the SQL that generate my tabular form.
SELECT APEX_ITEM.DISPLAY_AND_SAVE(1,rectype) rectype,
APEX_ITEM.DISPLAY_AND_SAVE(2,class_id) class_id,
APEX_ITEM.DISPLAY_AND_SAVE(3,attribute_id) attribute_id,
decode(rectype,1,'<p style="font-size:17px;color:white;background-color:#383838">'||title||'</p>',
2,'<p><b><i><big>'||title||'</b></i></big></p>',
3,replace(title,chr(13)||chr(10),'</br>'),
apex_item.textarea(4,title,5,200)) title,
decode(rectype,1,'<p style="font-size:17px;color:white;background-color:#383838">'||review1st||'</p>',
2,apex_item.text(5,review1st,3,3),
3,APEX_ITEM.SELECT_LIST_FROM_LOV(5,review1st,'ARTIST_RANK',null,'NO'),
apex_item.hidden(5,review1st)) review1st,
decode(rectype,1,'<p style="font-size:17px;color:white;background-color:#383838">'||review2nd||'</p>',
2,apex_item.text(6,review2nd,3,3),
3,APEX_ITEM.SELECT_LIST_FROM_LOV(6,review2nd,'ARTIST_RANK',null,'NO'),
apex_item.hidden(6,review2nd)) review2nd
FROM TABLE (pkg_artist_review.f_artist_skillreview (:P21_ARTIST_SEQ, :P21_ARTIST_DISCIPLINE,:P21_REVIEW_YEAR))I can't find a way to use APEX_ITEM.DISPLAY_AND_SAVE with HTML formatting implementation so I think I need to be smarter with my PLSQL Save process.
My save process save all records. So I don't use checkbox.
The processing point is ON Submit - After Computations and Validations.
Thanks again Denes. -
REP-1401: Fatal PL/SQL error occurred. ORA-01403: no data found
Hi guys,
I am getting error 'REP-1401: Fatal PL/SQL error occurred. ORA-01403: no data found ' when run the report
and i m also use formula column in my report.
can any body help me why it's coming.
following code is used in formula column plz check and verify:
function CF_3Formula return Char is
T1 VARCHAR2(100);
begin
SELECT
VAT_REG_NO INTO T1
FROM
JA_IN_HR_ORGANIZATION_UNITS JIHOU,
HR_LOCATIONS HL--,
--MTL_TXN_REQUEST_HEADERS MTLH
WHERE
JIHOU.ORGANIZATION_ID=HL.INVENTORY_ORGANIZATION_ID AND
JIHOU.LOCATION_ID=HL.LOCATION_ID AND
--Jihou.ORGANIZATION_ID = Mtlh.Organization_Id AND
-- Hl.INVENTORY_ORGANIZATION_ID =Mtlh.Organization_Id AND
-- MTLH.ATTRIBUTE10=SUBSTR(HL.LOCATION_CODE,1,3) AND
SUBSTR(HL.LOCATION_CODE,1,3)= :TO_ORG1 ;
RETURN (T1);
end;
plz help me out.Hi;
What is EBS version? Is it custom report or not?
See below which is mention similar errors
Autoinvoice Error: ORA-1403: no data found [ID 1209403.1]
APXIIMPT - Payable Open Interface Import Fails on "REP-1401: 'cf_source_nameformula': Fatal PL/SQL error occurred. ORA-01403: no data found" [ID 222058.1]
Regard
Helios -
Help with ORA-01403: no data found please.
First off I'd like to apologise for my lack of PL/SQL experience, what follows may seem naive, but I guess we all have to start somewhere.
I'm trying to create a function which determines an employee's Annual Holiday Entitlement by comparing their length of service against a lookup of entitlement values. Due to the complexity of the application I'm targeting there are a number of other factors to be take into consideration, but this is the basic idea of what I want to achieve.
I've started by taking a working SQL Server 2005 function and converted this using the translation scratch pad in SQL Developer 1.5.1 I'm now hand cranking the subtleties into the script but when I debug the code I'm getting "ORA-01403: no data found" at almost every SELECT. In fact the only successful select is from the ABS_SYSTEM_CONTROLS table. I can handle the first few failures by setting default values in the variables that I'm trying to load, but this isn't an option when it comes to selecting the DATE_OF_START from the PERSON table.
I've sure I've probably made some fundamental error, but can't spot it myself. Any help would be most welcome.
I've included the entire script below for your entertainment ;-)
Thanks
Phil.
create or replace
function mygetannualholidayentitlement
( v_empNo in varchar2
, v_inputDate in DATE
) return number as
-- Declare variables here
v_entitlement FLOAT(53);
v_holidayPlan VARCHAR2(20);
v_contServiceOption VARCHAR2(255);
v_postNo CHAR(16);
v_lengthOfService NUMBER(10,2) ; -- Need to give this a default value else the CURSOR (below) won't initialise.
v_empStartDate DATE;
-- Load up our loacal variable for each row in the loop and the final value is the one we want.
v_selectedLOF FLOAT(53);
v_selectedDateEffective DATE;
v_selectedAmount FLOAT(53);
v_effectiveDate DATE;
-- Cursor declaration
-- Holiday plan details are also keyed on DATE_EFFECTIVE. Need to identify which row is active as at our @effectiveDate.
CURSOR holDefCursor
IS SELECT length_of_service,
date_effective,
amount
FROM holiday_plan_def
WHERE hplan_code = v_holidayPlan
AND length_of_service < v_lengthOfService
ORDER BY date_effective ASC,
length_of_service ASC;
BEGIN
-- Initialise variables --
-- truncate any hours/Mins & secs from effective date
v_effectiveDate := trunc(v_inputdate);
v_entitlement := 0;
v_contServiceOption := 0;
v_lengthOfService := 0;
BEGIN
SELECT HPLAN_CODE
INTO v_holidayPlan
FROM APPT_HOLIDAY_BALANCE
WHERE emp_no = v_empNo
-- post_no = @postNo and
AND ( v_effectiveDate BETWEEN HOLIDAY_YEAR_START AND HOLIDAY_YEAR_END );
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_holidayplan:=NULL;
WHEN OTHERS THEN
raise_application_error(-20011,'Unknown Exception in MyGetAnnualHolidayEntitlement function.');
END;
-- Still no hoildayPlan? Then use the default plan code from ABS_SYSTEM_CONTROLS.
IF v_holidayPlan IS NULL THEN
SELECT HPLAN_CODE
INTO v_holidayPlan
FROM ABS_SYSTEM_CONTROLS ;
END IF;
BEGIN
SELECT OPTION_VALUE
INTO v_contServiceOption
FROM PS_OPTIONS
WHERE OPTION_NAME = 'CONTINUOUS_SERVICE_OPTION';
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_contServiceOption := 'N' ;
WHEN OTHERS THEN
raise_application_error(-20011,'Unknown Exception in MyGetAnnualHolidayEntitlement function.');
END;
IF v_contServiceOption = 'Y' THEN
BEGIN
-- Need to take into account the employees CONTINUOUS_SERVICE_DATE when calculating length of service
BEGIN
SELECT CONTINUOUS_SERVICE_DATE
INTO v_empStartDate
FROM person
WHERE emp_no = v_empNo;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_empStartDate := NULL;
WHEN OTHERS THEN
raise_application_error(-20011,'Unknown Exception in MyGetAnnualHolidayEntitlement function.');
END;
-- If we can't get a CONTINUOUS_SERVICE_DATE we will fall back to PERSON.DATE_OF_START
IF v_empStartDate IS NULL THEN
BEGIN
SELECT DATE_OF_START
INTO v_empStartDate
FROM PERSON
WHERE emp_no = v_empNo;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20011,'Unknown Exception in MyGetAnnualHolidayEntitlement function.');
END;
END IF;
END;
ELSE
BEGIN
-- Need to use employees DATE_OF_START when calculating length of service
SELECT DATE_OF_START
INTO v_empStartDate
FROM PERSON
WHERE emp_no = v_empNo;
END;
END IF;
-- Now we can get length of service
v_lengthOfService := sqlserver_utilities.datediff('MONTH', v_empStartDate, v_effectiveDate) / 12.00;
OPEN holDefCursor;
FETCH holDefCursor INTO v_selectedLOF,v_selectedDateEffective,v_selectedAmount;
WHILE ( sqlserver_utilities.fetch_status(holDefCursor%FOUND) = 0 )
LOOP
BEGIN
IF v_selectedDateEffective < v_effectiveDate THEN
v_entitlement := v_selectedAmount;
END IF;
-- Get the next value.
FETCH holDefCursor INTO v_selectedLOF,v_selectedDateEffective,v_selectedAmount;
END;
END LOOP;
CLOSE holDefCursor;
-- Return the result of the function
RETURN v_entitlement;
END;Edited by: user4395499 on 27-Oct-2008 04:04
Edited by: user4395499 on 27-Oct-2008 04:05
Edited by: user4395499 on 27-Oct-2008 07:10Your code is extremely procedural - whilst you could ultimately get it to work like this, it is not the most efficient way of doing it.
You should think about reducing your code to one sql statement if at all possible - this reduces the amount of context switching that needs to take place (eg. Going from PL/SQL to SQL back to PL/SQL to SQL, etc) and is usually much easier to maintain and test. You could do this by joining the various tables together, (and you might want to think about using nvl() to combine the two queries on the PERSON table!).
Also, you've labelled your parameters "v_" and your variables "v_" ... common convention uses "p_" for parameters, to allow for easy distinction between parameters passed in and variables declared during the course of the procedure/function.
As to the char() defined column - is there any chance that you could change that? As you've found out, chars are usually not a good datatype to use! Storing numbers in a char/varchar2 column is a no-no too, as you then run the risk of having invalid numbers stored in the column. -
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 -
ORA-01403: no data found in alert.log
Dear All,
I am getting ORA-01403: no data found in alert.log.Could you pls help me out what could be reasons behind it..Due to this i m getting loads of alerts.Pls suggest.
ThanksORA-01403 No Data Found
Typically, an ORA-01403 error occurs when an apply process tries to update an existing row and the OLD_VALUES in the row LCR do not match the current values at the destination database.
Typically, one of the following conditions causes this error:
Supplemental logging is not specified for columns that require supplemental logging at the source database. In this case, LCRs from the source database might not contain values for key columns. You can use a DML handler to modify the LCR so that it contains the necessary supplemental data. See "Using a DML Handler to Correct Error Transactions". Also, specify the necessary supplemental logging at the source database to prevent future errors.
There is a problem with the primary key in the table for which an LCR is applying a change. In this case, make sure the primary key is enabled by querying the DBA_CONSTRAINTS data dictionary view. If no primary key exists for the table, or if the target table has a different primary key than the source table, then specify substitute key columns using the SET_KEY_COLUMNS procedure in the DBMS_APPLY_ADM package. You also might encounter error ORA-23416 if a table being applied does not have a primary key. After you make these changes, you can reexecute the error transaction.
The transaction being applied depends on another transaction which has not yet executed. For example, if a transaction tries to update an employee with an employee_id of 300, but the row for this employee has not yet been inserted into the employees table, then the update fails. In this case, execute the transaction on which the error transaction depends. Then, reexecute the error transaction.
There is a data mismatch between a row LCR and the table for which the LCR is applying a change. Make sure row data in the table at the destination database matches the row data in the LCR. When you are checking for differences in the data, if there are any DATE columns in the shared table, then make sure your query shows the hours, minutes, and seconds. If there is a mismatch, then you can use a DML handler to modify an LCR so that it matches the table. See "Using a DML Handler to Correct Error Transactions".
Alternatively, you can update the current values in the row so that the row LCR can be applied successfully. If changes to the row are captured by a capture process at the destination database, then you probably do not want to replicate this manual change to destination databases. In this case, complete the following steps:
Set a tag in the session that corrects the row. Make sure you set the tag to a value that prevents the manual change from being replicated. For example, the tag can prevent the change from being captured by a capture process.
EXEC DBMS_STREAMS.SET_TAG(tag => HEXTORAW('17'));
In some environments, you might need to set the tag to a different value.
Update the row in the table so that the data matches the old values in the LCR.
Reexecute the error or reexecute all errors. To reexecute an error, run the EXECUTE_ERROR procedure in the DBMS_APPLY_ADM package, and specify the transaction identifier for the transaction that caused the error. For example:
EXEC DBMS_APPLY_ADM.EXECUTE_ERROR(local_transaction_id => '5.4.312');
Or, execute all errors for the apply process by running the EXECUTE_ALL_ERRORS procedure:
EXEC DBMS_APPLY_ADM.EXECUTE_ALL_ERRORS(apply_name => 'APPLY');
If you are going to make other changes in the current session that you want to replicate destination databases, then reset the tag for the session to an appropriate value, as in the following example:
EXEC DBMS_STREAMS.SET_TAG(tag => NULL);
In some environments, you might need to set the tag to a value other than NULL. -
Update conflict resoltion ORA-01403: no data found
I have set up multimaster replication environment with two database and I have implemented Update conflict resolution on a table using DISCARD method(Oracle provided) as below.
Some how it is not able to resolve the conflict and I am getting erro ORA-01403: no data found.
On MDS(M1) I run the follwing SQL
update menu_code
set ipp_uid = 20
where id = 4;
commit;
on master(M2) database in table menu_code row with ID=4 doesn't exsit.
When I apply deffred transaction that gnerated by above SQL
I get ORA-01403: no data found and ofcourse trnsaction doesn't apply to db and goes to deferror. Since I am using DISCARD method
it should be resolved and not to gnerate error message.
Here is detail info.
Table name: menu_code
--creating column group
BEGIN
DBMS_REPCAT.MAKE_COLUMN_GROUP (
sname => 'SYNAPSE',
oname => 'MENU_CODE',
column_group => 'MENU_CODE_CG1',
list_of_column_names => 'id,ipp_uid');
END;
-- adding update conflict resolution
BEGIN
DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
sname => 'SYNAPSE',
oname => 'MENU_CODE',
column_group => 'MENU_CODE_CG1',
sequence_no => 1,
method => 'DISCARD',
parameter_column_name => 'id,ipp_uid');
END;
--regenerating support for the table.
BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'SYNAPSE',
oname => 'MENU_CODE',
type => 'TABLE',
min_communication => TRUE);
END;
Thanks.
PravinYou are absolutely right. Now we decided not to write any conflict resolution routine at all.
Non MDS database is read-only till fail over. After fail over non MDS (other master) will allow insert/update operation.
To fail back to MDS we will write our procedure/function, out side of Oracle conflict resolution( both database will be in Read only mode during synchronizing).
We will delete all deferred transaction/error form the queue and once data transfer is complete, again MDS becomes primary database to use.
Oracle conflict resolutions are to complicated and has lots of overhead and maintenance.
Thanks.
Pravin -
Forms application returns "ORA-01403 no data found" exception on Windows 7
Hi everyone,
I am currently involved in an application compatibility project for an O/S migration from Windows XP to Windows 7.
We have a legacy Oracle Dev6i P18 Forms application that has been working perfectly on Windows XP for the last decade or so. When we installed the same application on Windows 7, it returned a pop-up error message with the text: "ORA-01403 no data found" when performing a certain operation (clicking on a Submit button in a specific form). The same operation works successfully on Windows XP displaying the message "Submit has been successful".
This error is well documented and the solution involves adding an exception handler to the faulting SQL statement(s) in order to handle the ORA-01403 exception. Unfortunately, the application is composed of compiled forms (.FMX) and we no longer have the source code so I can't implement this solution.
I ran a file comparison utility (WinDiff from the Windows SDK) and confirmed that all the files in the application folder and the Oracle Dev6i P18 folder are identical on both the Windows XP and Windows 7 systems.
I enabled tracing in SQLNet.ORA by configuring TRACE_LEVEL_CLIENT=SUPPORT (I know, too verbose) and other related settings on both systems and have uploaded the traces to my SkyDrive for public viewing:
http://sdrv.ms/10BNYtI
The traces show that the "ORA-01403" exception occurs many times on both Windows XP and Windows 7 systems as a result of various SQL statements being executed, for instance:
SELECT TASK_ID,TASK_DETAIL_STATUS,ASSIGNED_DATE FROM TASK_DETAILS WHERE TASK_ID = :b1 AND TASK_DETAIL_STATUS = (SELECT ID FROM V_TASK_STATUS WHERE ABBREVIATION = 'PLANNED' ) FOR UPDATE OF TASK_DETAIL_STATUS,ASSIGNED_DATE
UPDATE TASK_DETAILS SET ASSIGNED_DATE=NTMS_UTIL.GET_SERVER_DATE,TASK_DETAIL_STATUS=(SELECT ID FROM V_TASK_STATUS WHERE ABBREVIATION = 'ASSIGNED' ) WHERE ROWID = :b1
ORA-01403: no data found.
So the same error happens on both Windows XP and Windows 7.
On Windows XP, the error is somehow handled, and does not cause the "Submit" operation to fail.
On Windows 7, however, the error bubbles to the surface and is displayed to the user, thus halting the "Submit" operation.Thank you. I'm well aware that adding an exception handler is the classic solution to the ORA-01403 error. However, like I mentioned in my original post, I don't have the source code. All I have are the compiled .FMX forms so I can't implement such a solution:
From my original post:
This error is well documented and the solution involves adding an exception handler to the faulting SQL statement(s) in order to handle the ORA-01403 exception. Unfortunately, the application is composed of compiled forms (.FMX) and we no longer have the source code so I can't implement this solution. -
Ora-01403 no data found cursor error - Please help.
DECLARE
name1 talent.candidate_name%TYPE; -- Declare variables
name2 long; -- Declare variables
emp_id talent_id.emplid%TYPE;
NO_DATA_FOUND EXCEPTION;
CURSOR c1 IS
select candidate_name,(''''||trim(upper(candidate_name))||'''') as tst from talent ;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO name1, name2;
EXIT WHEN c1%NOTFOUND; -- TRUE when FETCH finds no more rows
select distinct emplid
INTO emp_id
from names a
where a.name_type = 'PRI'
and upper(a.last_name)||', '||upper(a.first_name) = name2;
INSERT INTO talent_id VALUES (emp_id, name1);
END LOOP;
CLOSE c1;
COMMIT;
Question: Above queries prompt me error msg ora-01403 no data found for emplid. I try but fail to solve it. Please help me. Thank you
Edited by: user12051088 on Mar 4, 2010 1:38 AM
Edited by: user12051088 on Mar 4, 2010 1:40 AMYes, this is very helpful :-)
My testing to insert table where emplid is null but still having error ora-01403 no data found when i remove on dbms_output.put_line as shown below:
Anyway, if i dint remove the dbms_output.put_line. It is working to insert emp_id is not null. How do I include record which emp_id is null? Thank you.
begin
select distinct emplid
INTO emp_id
from gdw_names a
where a.name_type = 'PRI'
and upper(a.last_name)||', '||upper(a.first_name) = name1;
IF emp_id is null THEN
RAISE no_data_found;
else
INSERT INTO gdw_talent_id VALUES (emp_id, name1);
end if;
exception
when no_data_found then
INSERT INTO gdw_talent_id VALUES (null, name1);
--when too_many_rows then
-- dbms_output.put_line('too many rows for ' || name1);
-- when others then
-- dbms_output.put_line('Unknown error for ' || name1);
end;
Edited by: user12051088 on Mar 4, 2010 9:11 PM -
ORA-01403: no data found for default value
I have the following pl/sql function body for setting the default value of a select list.
DECLARE
selected VARCHAR2(100);
BEGIN
select person_id into selected from ht_people
where :app_user=flow_user;
RETURN selected ;
END;
It works perfectly until the user who is logged in is not on the list and then I get:
ORA-01403: no data found
ERR-9131 Error in PLSQL function body for item default code, item=P7_IDENTIFIED_BY
Is there an item property I can set to handle this or must this be done in PL/SQL?This will throw no error if user not found:
DECLARE
selected VARCHAR2 (100);
BEGIN
FOR c IN (SELECT person_id
FROM ht_people
WHERE :app_user = flow_user)
LOOP
selected := c.person_id;
END LOOP;
RETURN selected;
END;Denes Kubicek
http://deneskubicek.blogspot.com/
http://www.opal-consulting.de/training
http://apex.oracle.com/pls/otn/f?p=31517:1
-------------------------------------------------------------------
Maybe you are looking for
-
How do i backup data from one iphone to another
how do i backup data from one iphone to another?
-
How do i post photos from iphoto to a facebook group instead of my own page?
I know how to post photos from Iphoto to my Facebook page, but cannot find a "simple" way to post photos in Iphoto to a Facebook "group" of which I am a member. Any suggestions? Thanks
-
Solaris 11 responds to IPSEC VPN traffic ONLY one direction
I have established a IPSEC VPN tunnel between my remote solaris 11 and office Sonicwall router using Site to Site. Everything works fine if the traffic initiates from the Solaris side. However when I try to ping or any network services like nfs,ssh,
-
I Need to make an insertion using the INSERT command from a text size 50kb. I know that LOB field only accepts 4kb. What should I do to eliminate this limitation? Once again, thanks for the help. null
-
Changing focus line in List View object?
Hi - I have an list view object on my dashboard that displays about 50 lines of data, with the very first line being a total line. You can drill-into the any one item on the list view to see detail in another chart. The content of the list view is up