亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

自定義函數中調用存儲過程 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條經驗 獲得超8個贊

解決方式:
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 關注
  • 820 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號