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

hibernate发出的调用自定义函数的语句是 select
get_name_by_code() as col_0_0_ 
from
dual 在pl/sql中调试可以通过 但是一调用就返回空
自定义函数
CREATE OR REPLACE FUNCTION get_Name_By_Code() RETURN VARCHAR2 IS
tmpVar VARCHAR2(3000);
BEGIN
p_app(tmpVar);--调用存储过程
RETURN tmpVar;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN '';
WHEN OTHERS THEN
RETURN '';
END get_Name_By_Code;
--存储过程
create or replace procedure p_app( tmpVar OUT VARCHAR2) is
begin 
update 表 set 字段 = 'aa' where 字段= 'bb';--update注释掉就行了
commit;
tmpVar := ‘结果集’;
end p_app;

紫衣仙女
浏览 707回答 2
2回答

qq_遁去的一_1

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

拉莫斯之舞

第一:调用存储过程不对select p_app(tmpVar) from dual;在oracle中,不能单独的执行存储过程的语句执行,因为调用错了,所以按照异常处理,返回空值第二:存储过程中,update没有一个异常处理,不规范你再尝试下试试看,总觉得存储过程不太对
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Unity 3D