故意使数据库出错

时间:2014-05-14 14:22:01

标签: oracle exception

我需要知道如何使 Oracle 数据库出错。原因是试图在JDBC中捕获异常。

通过最终使用JDBC调用数据库的Web服务调用对数据库的调用。因此,消费者通过 SOAP 请求与整个事物进行交互。大多数请求都会使用xsd:string或/和xsd:date

一种方法,例如,我这样做是为WHERE子句中的VARCHAR2字段设置一个大于4000字符的字符(BYTE 4000) 。还有其他方法可以强制数据库抛出错误吗?

2 个答案:

答案 0 :(得分:3)

如果无法向数据库添加对象,则需要使用可在纯SQL中创建的错误。以下是一些选项:

  • 日期无效(ORA-01839):select to_date('2/30/2014','mm/dd/yyyy') from dual
  • 无效号码(ORA-01722):select cast('aaa' as number) from dual
  • 无效数学(ORA-01476):select 1/0 from dual
  • 无效的标识符(ORA-00904):select this_doesnt_exist('aaa') from dual
  • 格式无效(ORA-01810):select to_date('10','mmmmmmmmm') from dual

答案 1 :(得分:1)

您可以执行以下操作之一:

我的选项是1,只需进行一些修改:

create function raise_custom_error
( error_no number
, message varchar2
)
return number
as
begin
  raise_application_error(error_no, message);
  return 0;
end;
/

像这样使用:

select case
       when 1=1 /*bad condition*/
       then raise_custom_error(-20163, 'My custom error')
       else 0
       end
from   dual