oracleexception

更新时间:2023-02-28 22:11:56 阅读: 评论:0

oracle怎么获取exception信息

通过如下代码:

public static String getExceptionAllinformation(Exception ex){

String sOut = "";

StackTraceElement[] trace = ex.getStackTrace();

for (StackTraceElement s : trace) {

sOut += "\tat " + s + "\r\n";

}

return sOut;

}

扩展资料:

注意事项

oracle存储过程,可以通过sqlcode 获取异常编码、通过sqlerrm获取异常信息。

例子:

create or replace procedure write2blob(p_id in number, --id

p_blob_data in blob,

p_msg out varchar2) --数据

is

v_lobloc blob; --目标blob

v_blob_data blob; --作为接受参数的字段,参数变量不能直接拿来赋值

v_amount binary_integer; --总长度

v_sub_length binary_integer; --一次读取的最大长度,不超过32766

v_sub_blob blob; --一次读取的子串

v_offt binary_integer; --游标

v_err_msg varchar2(1000);

v_id binary_integer; --要修改或新增的记录ID

v_temp binary_integer; --临时变量用于判断是否有v_id对应的记录begin

v_amount := length(p_blob_data);

v_blob_data := p_blob_data;

v_sub_length := 32767;

v_offt := 1;

v_id := p_id;

v_temp := 0; --execute immediate v_query_string into v_lobloc;

lect count(1) into v_temp from a where id = v_id; --查询是否有v_id对应的记录,并且赋值给v_te/*注意:无论是修改还是新增,blob字段都需要用empty_blob()进行初始化,否则后边的blob内容,不能写进表里面。


oracle exception问题续

--cursor定义为forupdate时,fetch的时候不能有commit及rollback命令的。
--否则会报ORA-01002:读取违反顺序错误
declare
cursormycurislect*fromscott.emp1forupdate;
excep_empexception;
excep_otherxception;
begin
forv_empinmycurloop
begin
--先检查是否超过5000
ifv_emp.sal>5000then
raiexcep_emp;
endif;
--然后在更新
dbms_output.put_line(v_emp.ename||'调整前的工资为:'||v_emp.sal);
updatescott.emp1tsal=1.5*salwherecurrentofmycur;
dbms_output.put_line(v_emp.ename||'调整后的工资为:'||v_emp.sal*1.5);
exception
whenexcep_empthen
dbms_output.put_line('该员工的工资不能超过5000');
whenothersthen
--程序错误抛出异常停止运行
dbms_output.put_line('Error0:'||sqlerrm);
raiexcep_others;
end;
endloop;
--统一提交,
commit;
exception
whenexcep_othersthen
rollback;
whenothersthen
dbms_output.put_line('Error1:'||sqlerrm);
end;

oracle怎么获取exception信息?

通过RAISE弹出框(调试时使用)

通过sqlcode , sqlerrm 这两个内置变量来查看,

例如:DECLARE --声明异常 some_kinds_of_err EXCEPTION; -- Exception to indicate an error condition v_ErrorCode NUMBER; -- Variable to hold the er..

为了提高存储过程的健壮性,避免运行错误,当建立存储过程时应包含异常处理部分.


Oracle.DataAccess.Client.OracleException ORA-12154: TNS: 无法解析指定的连接标识符

TNS无法解析是Oracle操作里经常遇到的问题,原因有二:
(1)Oracle服务器没有装好(一般不建议重装,因为Oracle卸载不完全是没法重装的)
(2)TNS没有配置
现在本文给出解决方案:
现在先测试一下tns是否可以ping,成功的界面大致如下
这里写图片描述
(1)在oracle安装路径的tns配置文件里添加如下代码
# tnsnames.ora Network Configuration File: d:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
其中orcl是我的数据库名称,这个需要根据需要配置

oracle 中的 exception when others then 捕获异常 在db2中怎么写

db2中类似oracle的异常捕获写法:
举例如下:

CREATE PROCEDURE OUT_LANGUAGE (...,OUT returnCode INTEGER, OUT returnMsg CHAR(32))
-- returnCode 返回执行中的的错误代码
-- returnMsg 返回执行中的的错误描述
SPECIFIC SQL_OUT_LANGUAGE
LANGUAGE SQL
BEGIN
DECLARE SQLCODE INTEGER DEFAULT 0;
DECLARE SQLSTATE CHAR(5) DEFAULT ´00000´;
DECLARE errorLabel CHAR(32) DEFAULT ´´;
......
-- in ca of no data found
DECLARE CONTINUE HANDLER FOR NOT FOUND
BEGIN
SET returnCode = SQLCODE;
-- 也可以设置为 SET returnCode = 0; 因为这个DECLARE是为了忽略NOT FOUND的执行结果
END;
-- in ca of SQL error
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SET returnCode = SQLCODE;
SET returnMsg = errorLabel;
END;

本文发布于:2023-02-28 18:59:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167759351650988.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:oracleexception.doc

本文 PDF 下载地址:oracleexception.pdf

标签:oracleexception
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|