有这么一个问题,我写了一个oracle过程,过程中有几条sql语句,我怎样才能知道我过程中的sql语句都被成功执行了呢?
我使用过“语句影响行数”进行返回sql是否执行成功有点不妥,因我使用的数据是由别的表产生的,如果那表中没有所要的数据语句影响行数为0是正常的。
如使用inset into t1 select t2;
这样的情况,执行这条语句后由于t2没有数据t1也不会有所影响行数大于0的情况,但是这样的情况也是有可能的。我想知道只要这条语句没有执行出错就行了,我怎样获取这样的返回值呢?谢谢。
我使用过“语句影响行数”进行返回sql是否执行成功有点不妥,因我使用的数据是由别的表产生的,如果那表中没有所要的数据语句影响行数为0是正常的。
如使用inset into t1 select t2;
这样的情况,执行这条语句后由于t2没有数据t1也不会有所影响行数大于0的情况,但是这样的情况也是有可能的。我想知道只要这条语句没有执行出错就行了,我怎样获取这样的返回值呢?谢谢。
BEGIN
IF CONDITION THEN //设置一个flag, 若为真则执行以下SQL stament
inset into t1 select t2; //只要不违反约束条件就会执行
ELSE
RES := 'NG'; //条件不足于执行这个语句则返回一个error info.
END
pl/sql程序块的异常部分包含了程序处理错误的代码,当异常被抛出时,一个异常陷阱就自动发生,程序控制离开执行部分转入异常部分,一旦程序进入异常部分就不能再回到同一块的执行部分。下面是异常部分的一般语法:
exception
when exception_name then
code for handing exception_name
[when another_exception then
code for handing another_exception]
[when others then
code for handing any other exception.] 懒人就简单一点处理: ……
BEGIN
……
COMMIT;
Exception When Others Then
Rollback;
DBMS_OUTPUT.PUT_LINE('错误信息为:'||sqlerrm);
End;