为了账号安全,请及时绑定邮箱和手机立即绑定

自定义函数中调用存储过程 update后为空?

自定义函数中调用存储过程 update后为空?

紫衣仙女 2019-02-13 15:11:59
hibernate发出的调用自定义函数的语句是 selectget_name_by_code() as col_0_0_ fromdual 在pl/sql中调试可以通过 但是一调用就返回空自定义函数CREATE OR REPLACE FUNCTION get_Name_By_Code() RETURN VARCHAR2 IStmpVar VARCHAR2(3000);BEGINp_app(tmpVar);--调用存储过程RETURN tmpVar;EXCEPTIONWHEN NO_DATA_FOUND THENRETURN '';WHEN OTHERS THENRETURN '';END get_Name_By_Code;--存储过程create or replace procedure p_app( tmpVar OUT VARCHAR2) isbegin update 表 set 字段 = 'aa' where 字段= 'bb';--update注释掉就行了commit;tmpVar := ‘结果集’;end p_app;
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

解决方式:
1.将get_Name_By_Code中tmpVar 赋值为常量,屏蔽p_app语句,看看返回结果。
如果正常返回,便是p_app执行抱异常了。如果是,感觉是不是那条commit语句问题。
我不懂hibanate,感觉它有自己的事务,是不是和commit这条语句有冲突。

查看完整回答
反对 回复 2019-03-24
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

第一:
调用存储过程不对
select p_app(tmpVar) from dual;
在oracle中,不能单独的执行存储过程的语句执行,因为调用错了,所以按照异常处理,返回空值
第二:
存储过程中,update没有一个异常处理,不规范

你再尝试下试试看,总觉得存储过程不太对

查看完整回答
反对 回复 2019-03-24
  • 2 回答
  • 0 关注
  • 699 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信