程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> pl/sql-求看大神看下 oracle 存儲過程 感激不盡

pl/sql-求看大神看下 oracle 存儲過程 感激不盡

編輯:編程解疑
求看大神看下 oracle 存儲過程 感激不盡

准備在java中調用 用游標返回的存儲過程 這個在pl/sql中顯示這個存儲過程是有問題的,begin中的sql語句 拿出來是可以以用的 只不過放在存儲過程裡面時候是把 固定的值 換成了參數 不知道哪裡錯了,希望大神幫看看

CREATE OR REPLACE PACKAGE TOLL_PATH_PACKAGE IS
--動態游標
TYPE REFCURSOR IS REF CURSOR;
END TOLL_PATH_PACKAGE;

CREATE OR REPLACE PROCEDURE TOLL_PATH_LENGTH AS
(

CUR_RET OUT TOLL_PATH_PACKAGE.REFCURSOR,
IN_LINK IN NUMBER, --起始
OUT_LINK IN NUMBER --目的
)
IS
BEGIN
OPEN CUR_RET FOR
with T (LINK_PID,S_NODE_PID,E_NODE_PID,tollpath,LENGTH,lvl) as (
select LINK_PID,
S_NODE_PID,
E_NODE_PID,
'/'||LINK_PID as tollpath,
LENGTH,
1 as lvl
from rd_link123
where LINK_PID = IN_LINK --起始
union all
select r.link_pid,
r.s_node_pid,
r.e_node_pid,
t.tollpath||'/'||r.link_pid,
t.length + r.length,
t.lvl + 1
from t,rd_link123 r
where r.s_node_pid = t.e_node_pid
and IN_LINK<> r.e_node_pid --不能轉回來
and t.link_pid <>OUT_LINK --目的地
and lvl <400
and instr(t.tollpath,'/'||r.link_pid)=0
)
select t.link_pid,to_clob(t.tollpath||'/') path,t.length
from T where LINK_PID=OUT_LINK;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('出錯了');
END TOLL_PATH_LENGTH;

最佳回答:


http://tieba.baidu.com/p/2353740842

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved