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

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

如下是oracle函數將查詢的單個結果返回,不知道為什么結果沒有數據?

如下是oracle函數將查詢的單個結果返回,不知道為什么結果沒有數據?

慕哥9229398 2022-04-14 15:11:35
CREATE OR REPLACE FUNCTION decodedim(str IN VARCHAR2, table_id IN NUMBER)RETURN VARCHAR2ISRET VARCHAR2(300);BEGINFOR code_name IN (select wm_concat(flag_name) INTO RET from(select flag_name from PU_META_PLAT.MD_META_DIM_CODE where dim_table_id = table_id and flag_code in (SELECTtrim(substr(',' || str || ',', instr(',' || str || ',', ',', 1, LEVEL)+1,instr(',' || str || ',', ',', 1, LEVEL + 1)-instr(',' || str || ',', ',', 1, LEVEL)-1))FROM dualCONNECT BY LEVEL <= (length(',' || str || ',')-length(replace(',' || str || ',', ',', '')))/1-1)))LOOPDBMS_OUTPUT.put_line(RET);RETURN RET;END LOOP;END;上面是函數建立的代碼,下面是執行函數:select decodedim('1,2,3,4,5,6,7,8,25,26,27,28,29,32,33,34,35', 5376) from dual;不知道為什么結果沒有數據,求大神幫忙看看?
查看完整描述

3 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

  1. 你這個結構有問題,你這個循環不管幾次,總是會在第一次就跳出去。return 應該是在loop結束之后。

  2. 去看看上面的查詢能不能返回結果。

  3. 自己寫的程序盡量有異??刂?。方便調試。你這種簡單的程序,調試一下就能看到問題在哪里了。


查看完整回答
反對 回復 2022-04-19
?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

代碼太長了,又沒有注釋,沒法看啊。
請問您是在什么工具中執行的,如果是sqlplus,那么要先執行"set serveroutput on",如果是sql developer之類的圖形化工具,一般不用額外作設置。
其次,可以在每一步操作之后加上這一步的結果輸出語句,例如dbms_output.put_line(結果),方便查看和調試。
希望對您有幫助啦。

查看完整回答
反對 回復 2022-04-19
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

你for循環中的語句能執行么?
我覺得如果直接執行語句沒有問題,可以不用設置變量ret
直接取循環的內容就好了。
select wm_concat(flag_name) INTO RET ——》select wm_concat(flag_name) as tmp
DBMS_OUTPUT.put_line(RET); -----> DBMS_OUTPUT.put_line(code_name.tmp);
RETURN RET; ----->RETURN code_name.tmp;

查看完整回答
反對 回復 2022-04-19
  • 3 回答
  • 0 關注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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