SQL Exception blocks everyone .... why
Hello to all,
I have an some question towards SQL exception in JDBC, when there is an error trying to recieve infomation from a database it stops all access for everyone log on at the same time.
For example, if I try to insert a string in a field that doesn't exist or insert a string where an I should use an int, an sql excption will be throw, and it blocks there (for everyone), meaning another users would like to search the datbase for information, but recieves nothing. I'm using a connection pool for the connection to my database in each one of my servlets that also
"implements SingleThreadModel" .
Could it be because of the SingleThreadModel, or has it to do with the connection pool ???
All help is welcomed
Thanks ..... Wally
U can set the Connection with proper concurrency like CONCUR_UPDATABLE ....that helps in working with Concurrent users accesing the same table or DB..
Note: this depends on the Driver that u r using its not supported by many drivers.
sriram
Similar Messages
-
Why is User defined exception block not reaching
I want to catch exception if wrong column name is there in a select statement.
In this example i am useing static query but in real time it will be a dynamic query and it may be possible that a particualre column has been deleted from that table so an error will be returned that we need to catch and display custom message to the user. But control is not going to exception block.
type_id1 column is not there in table1
what is that i am missing here?
declare
vcTypeID varchar2(10);
invalid_COLUMNs EXCEPTION;
pragma exception_init(invalid_COLUMNs,-06550);
begin
select to_char(type_id1) into vcTypeID from table1 WHERE ROWNUM=1;
dbms_output.put_line(vcTypeID);
exception
when invalid_COLUMNs then
dbms_output.put_line('def');
when others then
dbms_output.put_line('others');
end;
Edited by: user13065317 on Jun 1, 2012 12:47 AMHi,
Why are you trying to catch 6550? I'd rather try with 904 - invalid identifier
1 DECLARE
2 e EXCEPTION;
3 PRAGMA EXCEPTION_INIT(e, -904);
4 v VARCHAR2(128);
5 BEGIN
6 EXECUTE IMMEDIATE 'SELECT TO_CHAR(nonexisting) FROM dual' INTO v;
7 EXCEPTION
8 WHEN e THEN dbms_output.put_line('Invalid identifier');
9* END;
SQL> /
Invalid identifier
PL/SQL procedure successfully completed.
SQL>Lukasz -
DBMS_OUTPUT in exception block
Hi:
I have a user defined exception and I am trying to use DBMS_OUTPUT.PUT_LINE in the exception block. Even though I run the code in sqlplus with serverputput on, the dbms_output is not displayed. Why?
Here is an example:
DECLARE
salary_too_high EXCEPTION;
current_salary NUMBER := 20000;
max_salary NUMBER := 10000;
erroneous_salary NUMBER;
BEGIN
BEGIN ---------- sub-block begins
IF current_salary > max_salary THEN
RAISE salary_too_high; -- raise the exception
END IF;
EXCEPTION
WHEN salary_too_high THEN
-- first step in handling the error
DBMS_OUTPUT.PUT_LINE('Salary ' || erroneous_salary || ' is out of range.');
DBMS_OUTPUT.PUT_LINE('Maximum salary is ' || max_salary || '.');
END;
Please help.
Thanks.
BruceIs this the complete code you have, or this is just part of the whole code?
I tried to run it, and it's perfectly OK.
SQL> set serverout on size 100000
SQL> DECLARE
2 salary_too_high EXCEPTION;
3 current_salary NUMBER := 20000;
4 max_salary NUMBER := 10000;
5 erroneous_salary NUMBER;
5 BEGIN
6 begin
7
8 if current_salary > max_salary then
9 RAISE salary_too_high; -- raise the exception
10 END IF;
11 EXCEPTION
12 WHEN salary_too_high THEN
13 -- first step in handling the error
14 DBMS_OUTPUT.PUT_LINE('Salary ' || erroneous_salary || ' is out of range.');
15 dbms_output.put_line('Maximum salary is ' || max_salary || '.');
16 end;
17 end;
18 /
Salary is out of range.
Maximum salary is 10000.
PL/SQL procedure successfully completed. -
Pl/sql exception not caught.
This program should give me an error "table or view does not exist" caught by the pl/sql exception, as dba_data_file1 table does not exist.
However all that it returns is Input truncated to 3 characters
Q1. Why?
Q2. How can I remove this message "Input truncated to 3 characters. Where is this message comming from?
#!/bin/ksh
sqlplus -s << EOF
abc/[email protected]
set pages 0
SET SERVEROUTPUT ON BUFFER 100000000
BEGIN
dbms_output.ENABLE(1000000);
SELECT
round(sum(bytes)/1024/1024/1024),
round(sum(free_bytes)/1024/1024/1024),
TRUNC(SYSDATE)
from
(SELECT tablespace_name, BYTES, 0 FREE_BYTES FROM dba_data_files1
UNION ALL
SELECT tablespace_name, 0, BYTES FROM dba_free_space
union all
SELECT tablespace_name, BYTES, 0 FROM dba_temp_files
union all
SELECT 'REDO-LOGS', b.BYTES, 0
FROM v\\$logfile a, v\\$log b
WHERE
a.GROUP# = b.GROUP#);
dbms_output.put_line("ok ");
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line("Error "||SQLERRCODE ||":"|| SQLERRM);
exit 1
END;
exit 0
EOF
$> tstrun.ksh
Input truncated to 3 charactersEXCEPTION
WHEN OTHERS THEN
dbms_output.put_line("Error "||SQLERRCODE ||":"|| SQLERRM);
exit 1
END;
if you catch exception, process it then you must reraise it. its a general mistake found when you are using others instead of name exception, so remember whenever you use others you must reraise the exception -
SQL exception during creation of a physical standby database with EM
Version: EM Oracle 10.2.5 (agents running, repository running, primary db running, all targets visible and reachable with EM)
I try to create a physical standby database with the enterprise manager and each time the process is aborted with a SQL exception during the preparation of the job by the EM. I have added a part of the OMs log containing the error at the end of the excerpt.
=============
2010-04-29 16:00:39,856 [EMUI_16_00_39_/console/targets] WARN pref.SubtabPref getFolders.710 - Unknown folder id: VirtualServers retrieved from repository
2010-04-29 16:01:04,765 [EMUI_16_01_04_/console/database/dataguard/create] ERROR em.dataguard validate.1329 - CreateBean: ClassNotFoundException: null
2010-04-29 16:02:05,476 [EMUI_16_02_05_/console/database/dataguard/create] ERROR jobs.dbclone checkSetFileError.79 - DatabaseFileAttributes.checkSetFileError(): Null database file!
2010-04-29 16:02:05,476 [EMUI_16_02_05_/console/database/dataguard/create] ERROR jobs.dbclone setControlfiles.160 - DatabaseFileAttributes.setDatafiles(): Invalid control file!
2010-04-29 16:02:05,492 [EMUI_16_02_05_/console/database/dataguard/create] ERROR jobs.dbclone getControlFileNames.616 - DatabaseFileAttributes.getDatafileNames(): null datafile names!
2010-04-29 16:02:32,823 [Thread-28] ERROR em.jobs remoteOp.2389 - DBVerify.remoteOp(): Error: max_stamp# 6071384
2010-04-29 16:02:32,823 [Thread-28] ERROR jobs.dbclone submitJobPreparation.3297 - DBCloneObject.submitJobPreparation(): getMaxLogSequenceNum: Während der Vorbereitung des Jobs ist eine SQL Exception aufgetreten. Um das Problem zu diagnostizieren, legen Sie das Agent Perl-Skript-Tracing auf DEBUG fest und wiederholen den Vorgang
2010-04-29 16:02:32,823 [Thread-28] ERROR jobs.dbclone submitJobPreparation.3501 - DBCloneObject.submitJobPreparation(): Exception: java.lang.Exception: Während der Vorbereitung des Jobs ist eine SQL Exception aufgetreten. Um das Problem zu diagnostizieren, legen Sie das Agent Perl-Skript-Tracing auf DEBUG fest und wiederholen den Vorgang
2010-04-29 16:02:32,823 [Thread-28] ERROR jobs.dbclone submitDBCloneJob.3716 - DBCloneObject.submitDBCloneJob(): Exception: Während der Vorbereitung des Jobs ist eine SQL Exception aufgetreten. Um das Problem zu diagnostizieren, legen Sie das Agent Perl-Skript-Tracing auf DEBUG fest und wiederholen den Vorgang
2010-04-29 16:02:37,496 [EMUI_16_02_37_/console/database/dataguard/create] ERROR em.dataguard onEvent.1243 - CreateConfigController: Exception: oracle.sysman.db.dg.util.VxxStandbyException: Während der Vorbereitung des Jobs ist eine SQL Exception aufgetreten. Um das Problem zu diagnostizieren, legen Sie das Agent Perl-Skript-Tracing auf DEBUG fest und wiederholen den Vorgang
=========
I have set the agent perl script tracing to DEBUG, but can't find any reason, why the job preparation failed.
Has anyone an idea why the job cannot be prepared? Thanks in advance for investigation :-)Can you please tell me how can i see data gaurd on EM..
I have oracle 11gR1..i have implemmented primary as well standby database..
I have already started EM but i have no idea where to find datagaurd option..or how to create standdby db using EM..
You got error that means u did it using EM..how can i do it on EM -
How to handle the plsql error occuring in the exception block
We know how to handle exceptins which occur in BEGIN block.
But am unable to catch the exception in the exception block. Am writing an erroeneous code so that the control will go to exception block and there is also one plsql error, but am unable to handle that error, it's returning the error to the calling environment.
DECLARE
cnt NUMBER(5):=0;
BEGIN
select 'debalina' INTO cnt from dual;
DBMS_OUTPUT.PUT_LINE(to_char(cnt));
EXCEPTION
WHEN invalid_number THEN
DBMS_OUTPUT.PUT_LINE('error has occured inside begin block');
cnt:='deba';
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('error has occured inside begin block');
END;
please suggest me how to catch this exception?Hi,
DECLARE
cnt NUMBER(5):=0;
BEGIN
select 'debalina' INTO cnt from dual;
DBMS_OUTPUT.PUT_LINE(to_char(cnt));
EXCEPTION
WHEN invalid_number THEN
DBMS_OUTPUT.PUT_LINE('error has occured inside begin block');
cnt:='deba';
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('error has occured inside begin block');
END;
First of all your namee exception which you have posted i.e invalid_number itself is wrong.
You need to use named exception VALUE_ERROR for catching the exception in the main block.
SQL> DECLARE
2 cnt NUMBER(5):=0;
3 BEGIN
4 select 'debalina' INTO cnt from dual;
5 DBMS_OUTPUT.PUT_LINE(to_char(cnt));
6 EXCEPTION
7 WHEN Invalid_number THEN
8 DBMS_OUTPUT.PUT_LINE('error has occured inside main block');
9 end;
10 /
DECLARE
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 4
SQL> DECLARE
2 cnt NUMBER(5):=0;
3 BEGIN
4 select 'debalina' INTO cnt from dual;
5 DBMS_OUTPUT.PUT_LINE(to_char(cnt));
6 EXCEPTION
7 WHEN VALUE_ERROR THEN
8 DBMS_OUTPUT.PUT_LINE('error has occured inside main block');
9 end;
10 /
error has occured inside main block
PL/SQL procedure successfully completed.Your doubt regarding catching the exception in exception block, you can execute as below, by nesting a Begin block inside the exception block itself.
SQL> DECLARE
2 cnt NUMBER(35):=0;
3 BEGIN
4 select 'debalina' INTO cnt from dual;
5 DBMS_OUTPUT.PUT_LINE(to_char(cnt));
6 EXCEPTION
7 WHEN Value_error THEN
8 DBMS_OUTPUT.PUT_LINE('error has occured inside main block');
9 Begin
10 cnt:='deba';
11 Exception
12 WHEN OTHERS THEN
13 DBMS_OUTPUT.PUT_LINE('error has occured inside exception block');
14 End;
15 END;
16 /
error has occured inside main block
error has occured inside exception block
PL/SQL procedure successfully completed.Hope your doubt is clear.
Twinkle -
Informix 7.3 - Oracle 8i migration: Generate Exception Blocks not offered
I have installed OMWB 2.0.2 and plugin for Infromix Dynamic Server 7.3.
There is no offered checkbox "Generate Exception Blocks" in "Parse Options" panel for customization of parsing stored procedures in Source Model.
(But it was normally offered and working in previous OMWB 1.4.1 wersion).
How I could coerce OMWB2.0.2 to generate BEGIN-EXCEPTION-END blocks around every SELECT statement in stored procedures ?
Many thanks
Vladimir Kubanka (alias Bare Foot)
[email protected] , [email protected]Vladimir,
Generate Exception Blocks parse option is available on the T/SQL to PL/SQL parsers (Sybase and Microsoft SQLServer), I suppose you could put in an enhancement request if this functionality was important to yourself and other users.
Turloch -
SQL Query works in MS Access but caused SQL exception
Hi all,
I've got this query that works if I run it in MS Access but caused an SQL Exception if I run in my Java programme.
The query
SELECT Count(*) AS countPlayerMax FROM (SELECT Count(*) AS countSent, sent.mobileno FROM sent WHERE (((sent.date_sent) Between #2002-3-1# And #2002-3-8#)) GROUP BY sent.mobileno HAVING (((Count(*))>100)))
The exception is
[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause.
I've done nested queries before but this one doesn't work. Any ides why??
thanksThanks for your suggestion
I tried it but it still gives the same error, now the SQL looks like this
SELECT Count(*) AS countPlayerMax FROM (SELECT Count(*) AS countSent, sent.mobileno FROM sent WHERE sent.date_sent Between #2002-3-1# And #2002-3-8# GROUP BY sent.mobileno HAVING Count(*)>100)
the exception is the same
[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause. -
SQL Exception with the message "executeQuery, Exception = null"
Hi ,
Iam getting an SQL Exception with the message "executeQuery, Exception = null". Other thing is, the SQLException.getErrorCode gives me 0. Below is the stack trace. Could you please help me, why Iam getting this message:
com.ups.ops.dm.dao.DAOSevereDataBaseException: Return Code from Database :0
at com.ups.ops.dm.dao.DAOAction.run(Unknown Source)
at com.ups.ops.dm.dao.DAOAgent.doWork(Unknown Source)
at com.ups.ops.dm.dao.service.DAOActionServiceModule.service(Unknown Source)
at com.ups.ops.dm.command.CommandManager.doCommand(Unknown Source)
at com.ups.ops.dm.dao.DataAcessObjectManager.execute(Unknown Source)
at com.ups.ops.dm.edc.db.EDCDataAccessObjectManager.lookups(Unknown Source)
at com.ups.ops.dm.edc.business.EDCVoidBusinessLogic.checkPackageScan(Unknown Source)
at com.ups.ops.dm.edc.service.VoidShipmentServiceModule.service(Unknown Source)
at com.ups.ops.dm.command.CommandManager.doCommand(Unknown Source)
at com.ups.ops.dm.edc.service.OPLDRequestDispatcherServiceModule.dispatchCommandMessage(Unknown Source)
at com.ups.ops.dm.edc.service.OPLDRequestDispatcherServiceModule.service(Unknown Source)
at com.ups.ops.dm.command.CommandManager.doCommand(Unknown Source)
at com.ups.ops.dm.edc.control.EDCReceiver.onReceive(Unknown Source)
at com.ups.ops.dm.edc.receiver.OPLDReceiverMDB.onMessage(Unknown Source)
at sun.reflect.GeneratedMethodAccessor97.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocati
on.java:187)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
154)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.ja
va:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
176)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInt
erceptor.java:126)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterc
eptor.java:114)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
176)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
at $Proxy67.onMessage(Unknown Source)
at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:466)
at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
at weblogic.ejb.container.internal.NewJMSMessagePoller.processOneMessage(NewJMSMessagePoller.java:245)
at weblogic.ejb.container.internal.NewJMSMessagePoller.run(NewJMSMessagePoller.java:121)
at weblogic.ejb.container.internal.NewJMSMessagePoller.timerExpired(NewJMSMessagePoller.java:204)
at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
com.ups.ops.dm.dao.DAOSevereDataBaseException: Return Code from Database :0
at com.ups.ops.dm.dao.DAOAction.run(Unknown Source)
at com.ups.ops.dm.dao.DAOAgent.doWork(Unknown Source)
at com.ups.ops.dm.dao.service.DAOActionServiceModule.service(Unknown Source)
at com.ups.ops.dm.command.CommandManager.doCommand(Unknown Source)
at com.ups.ops.dm.dao.DataAcessObjectManager.execute(Unknown Source)
at com.ups.ops.dm.edc.db.EDCDataAccessObjectManager.lookups(Unknown Source)
at com.ups.ops.dm.edc.business.EDCVoidBusinessLogic.checkPackageScan(Unknown Source)
at com.ups.ops.dm.edc.service.VoidShipmentServiceModule.service(Unknown Source)
at com.ups.ops.dm.command.CommandManager.doCommand(Unknown Source)
at com.ups.ops.dm.edc.service.OPLDRequestDispatcherServiceModule.dispatchCommandMessage(Unknown Source)
at com.ups.ops.dm.edc.service.OPLDRequestDispatcherServiceModule.service(Unknown Source)
at com.ups.ops.dm.command.CommandManager.doCommand(Unknown Source)
at com.ups.ops.dm.edc.control.EDCReceiver.onReceive(Unknown Source)
at com.ups.ops.dm.edc.receiver.OPLDReceiverMDB.onMessage(Unknown Source)
at sun.reflect.GeneratedMethodAccessor97.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocati
on.java:187)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
154)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.ja
va:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
176)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
176)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInt
erceptor.java:126)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterc
eptor.java:114)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
176)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
at $Proxy67.onMessage(Unknown Source)
at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:466)
at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
at weblogic.ejb.container.internal.NewJMSMessagePoller.processOneMessage(NewJMSMessagePoller.java:245)
at weblogic.ejb.container.internal.NewJMSMessagePoller.run(NewJMSMessagePoller.java:121)
at weblogic.ejb.container.internal.NewJMSMessagePoller.timerExpired(NewJMSMessagePoller.java:204)
at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)Could you please help me, why Iam getting this message:You have bug in your software
-
Sql exception occurred during pl/sql upload error in custom integrator
Hi,
I have modified custom integrator which was working fine. I have added one column in template and the lov is working fine.
Issue is that when i upload the file to oracle it showing error as ''sql exception occurred during pl/sql upload".
I have tried executing the same from back end but it was working fine from back end and inserting properly in interface table.
Kindly suggest for the issue.
Regards,
GkHi,
You can get the error message in excel sheet itself by using the following piece of code.
FND_MESSAGE.CLEAR;
FND_MESSAGE.SET_NAME ('APPLICATION', 'APPLICATION_MESSAGE_NAME');
FND_MESSAGE.SET_TOKEN ('ERROR_TOKEN', ERROR MESSAGE);
FND_MESSAGE.RAISE_ERROR;
Create an excpetion block and include the above piece of code whilde catching the exception.
APPLICATION- The applicatio in which you create message
APPLICATION_MESSAGE_NAME- The message Name
ERROR_TOKEN- You must create a token in application message
ERROR MESSAGE- You can see the error using SQLERRM.
Thanks,
Vinoop -
hi !
I am geeting an SQL Exception ...
Network apdator could not establish connection..
the code is as follows
String driverName = "oracle.jdbc.driver.OracleDriver";
String dbURL = "jdbc:oracle:thin:@server:1521:biz";
String uName = "uidt";
String pwd = "pwd";
Class.forName(driverName);
conn = DriverManager.getConnection(dbURL, uName, pwd);
Please help me out !!First aid check list for "connection refused":
- Check host name in connect string.
- Check port number in connect string.
- Try numeric IP address of server host in connect string, in case name server is hosed.
- Are there any firewalls between client and server blocking the port.
- Check that the db server is running.
- Check that the db server is listening to the port. On the server, try: "telnet localhost the-port-number". Or "netstat -an", there should be a listening entry for the port.
- Try "telnet serverhost the-port-number" from the client, to see if firewalls are blocking it.
- If "telnet" fails: try it with the numeric ip address.
- If "telnet" fails: does it fail immediately or after an obvious timeout? How long is the timeout?
- Does the server respond to "ping serverhost" or "telnet serverhost" or "ssh serverhost"? -
I am just wondering if it's except-able to put and insert in the exception block? What I would like is if date2 is null kick off an error. if there are no records where date2 is null then go ahead and insert the new record. Is this common practice or should I use sql%rowcount or put count in to variable and check if greater then 0?
create or replace
PROCEDURE X_INSERT
(P_ID NUMBER,
P_DATE1 DATE,
P_DATE2 DATE
AS
a NUMBER;
BEGIN
select ID into a from X where ID = P_ID
AND DATE_2 IS NULL ;
if sql%found then
raise_application_error(-20000, 'record exists');
END IF;
exception
when no_data_found then
insert into X values (P_ID,P_DATE1, P_DATE2);
END X_INSERT;>
I am just wondering if it's except-able to put and insert in the exception block?
>
No - I do not think that approach is acceptable and would not recommend it.
You need any exception LOGGING (inserts) to be permanent even if the transaction is rolled back.
One way to accomplish this is to write a LOG procedure (e.g. SP_LOG) that uses PRAGMA AUTONOMOUS_TRANSACTION so that the logging will occur even if the original transaction is rolled back. You can have overloaded versions of SP_LOG that take different sets of parameters.
The code in the exception block would call the LOG procedure to do the logging and would pass it any information relevant to the exception and where it was caused. A sample generic EXCEPTION block might be
EXCEPTION
WHEN OTHERS THEN
/* Build error string to help debug problem */
v_error_text := ('Exception :'
|| SQLERRM
|| ' Parse error :'
|| TO_CHAR (SQLCODE)
|| ' at position '
|| TO_CHAR (DBMS_SQL.LAST_ERROR_POSITION)
|| ' SQL Text used :'
/* Log this error in a table - for researching problems. */
SP_LOG ( v_error_text );
END main_sp;There would normally be other parameters to the log procedure to identify the stored procedure and package name where the exception was raised, the exception error stack and so on.
The exception block might also need to re-raise the exception rather than make it disappear so that the caller is aware of the exception that occured.
In your case there is no real exception. You just want to log information.
So instead of raising an exception you would just modify your code to call the logging procedure.
if sql%found then
SP_LOG('Cannot INSERT record into myTable - record exists');
END IF; -
How to throw or catch sql exception for executeReader sql adapter
Wcf sql adapter was created and executeReader was used.
When an invalid sql statement was constructed and send it to wcf sql adapter, it will hanging there, and no response. No exception was catched even though send chape was inside a catch block. How can I catch this kind of exception
or throw this exception ? I need to give client an exception resposne.
thanks
GaryI used scope with exception handle which has Exception object type: "System.SystemException".
I guess this type "System.SystemException" can catch any exception, including sql exception. Maybe I am wrong. I got error from window event:
A message sent to adapter "WCF-Custom" on send port "WcfSendPort_SqlAdapterBinding_DalCore_Custom" with URI "mssql://shig-quad-2k3e1//DataSourceOne?" is suspended.
Error details: System.Data.SqlClient.SqlException: Incorrect syntax near '='.
Server stack trace:
at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)
MessageId: {B24EF5B8-298A-4D4F-AA98-5E639361A7DB}
InstanceID: {F8924129-265B-4652-B20E-8D25F8F20A51}
If "System.SystemException" can't catch all exception, which type can catch all exception ? I want to catch all exception in this catch block.
thanks
Gary -
SQL Exception not in streaming mode
Hi friends
I am using oracle driver and I am getting this error on queries very randomly.I am using Oracle8i 8.1.5 on NT machine.
SQL Exception not in streaming mode
Can anybody explaing why and when this error gets generated and what is the solution for it.
Please contact me at the following emailids
[email protected]
[email protected]
nullWhat do you do with the connection before the prepareStatement()? Is your program small enough to post here (use [code]...[/code] tags)? Do you have multiple threads that try to use the same connection simultaneously? Do you work with Long, Clob or Blob columns? What JDBC driver version?
-
Can anyone suggest why i get an sql expection from my servlet? Or suggest another way performing this. I just get a my table but no results becuase of an sql exception in tomcat server console. degree id is the parameter from the html page
try{
conn = DriverManager.getConnection(url, user, password);
String selectSQL = "SELECT * from book2readinglist WHERE readinglist = " + degreeid + ""; // change * to book_id or whatever it is
System.err.println("DEBUG: Query: " + selectSQL);
Statement stmt = conn.createStatement();
ResultSet rs1 = stmt.executeQuery(selectSQL);
//print out html head element
out.println("<head>"+
"<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">" +
"<title>books</title>" +
"</head>");
// print out table header
out.println("<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\">" +
"<tr><th><h4>Title</th></h4><th><h4>Author</th></h4><th><h4>Category</th></h4><th><h4>Cover</th></h4><th><h4>Publisher</th></h4><th><h4>Price</th></h4><th></th></tr>");
//print out table rows one for each row returned in rs1
while(rs1.next()){
String selectSQL2 = "SELECT book from book2readinglist WHERE readinglist = " + degreeid + "";
System.err.println("DEBUG: Query: " + selectSQL2);
Statement stmt2 = conn.createStatement();
ResultSet rs2 = stmt2.executeQuery(selectSQL2);
while(rs2.next()){
String selectSQL3 = "SELECT * from books WHERE idcol = " + rs2.getString("book") + ""; /
System.err.println("DEBUG: Query: " + selectSQL3);
Statement stmt3 = conn.createStatement();
ResultSet rs3 = stmt3.executeQuery(selectSQL3);
out.print("<tr>");
out.print("<td><h5>" + rs3.getString("title") + "</td>");
out.print("<td><h5>" + rs3.getString("author") + "</td>");
out.print("<td><h5>" + rs3.getString("category") + "</td>");
out.print("<td><img src=\"/assignment1/img/" + rs3.getString("cover") + "\" /></td>");
out.print("<td><h5>" + rs3.getString("publisher") + "</td>");
out.print("<td><h5>" + rs3.getString("price") + "</td></h5>");
Thanks
Nicki am afraid, exception stack trace would help us a lot in identifiyin wat, where, why an exception occured...
Maybe you are looking for
-
How to I eliminate space in my start up file so I can increase more space to add onenote?
how to I eliminate space in my start up file so I can increase more space to add one-note?
-
IPhone 4s: upgrade from ios 5.1 to ios 6 failed and phone stuck in recovery mode
I am on a Macbook OS 10.7.5. iTuens 10.7. This afternoon I plugged in my iPhone 4S and started the upgrade process from iOS 5.1 to iOS 6. The update process failed at some point and now I am stuck with only the "Restore" option in iTunes. The fright
-
Add device cdrom non global zone
Hi All , how to add device cdrom to non global zone ? many thanks
-
IPod Classic - 80GB - Invalid Index Key. Won't Sync.
So, my friend recently gave me his old iPod Classic 80gb 6th generation. I restored it, then began to sync it with my itunes library. It began to sync, but then froze. iTunes and Finder became frozen. I had to force quit iTunes and then unplug the iP
-
How do I get JPGs to show up crisp in my video??
When I use JPGs in adobe premier (no matter what resolution) the text on them becomes pixelated and illegible. What can I do to render the text on a jpg so that it is crisp and can be read. is there a better format? tiff? gif? do I have to render the