我需要從一個過程的表中獲取值的列表,然後將值傳遞給第二個過程。 例如。在A.prc
我需要從表中獲取數據,並在B.prc
我需要打印我在A.prc
中獲取的數據。我想寫兩個plsql程序。在一個過程中獲取數據並從第二個過程中打印出來
在此先感謝
P.S. :使用Oracle 11g作爲DB與SYS PRIV和蟾蜍寫中華人民共和國
CREATE OR REPLACE PROCEDURE P1(
EMPNO OUT EMP.EMPNO%type,
ENAME OUT EMP.ENAME%type,
DEPTNO OUT EMP.DEPTNO%type)
AS
C_EMP SYS_REFCURSOR;
C_EM VARCHAR2(200);
BEGIN
C_EM:='SELECT EMPNO,ENAME,DEPTNO FROM EMP';
OPEN C_EMP FOR C_EM;
LOOP
FETCH C_EMP into EMPNO,ENAME,DEPTNO;
EXIT WHEN C_EMP%notfound;
END LOOP;
P2(C_EMP);
CLOSE C_EMP;
END;
/
CREATE OR REPLACE PROCEDURE P2(e_EMP SYS_REFCURSOR) AS
BEGIN
LOOP
FETCH e_EMP INTO E_EMPNO,E_ENAME,E_DEPTNO;
EXIT WHEN e_EMP%NOTFOUND;
END LOOP;
CLOSE e_EMP;
END;
/
錯誤:[錯誤] PLS-00306(17:4):PLS-00306:錯誤的號碼或類型的 參數打電話給'P2'
更新1:還需要這樣做,沒有遊標,有關聯數組。 這是作業/作業的一部分。 與陣列嘗試這樣做:
CREATE OR REPLACE PROCEDURE P1
AS
TYPE EmpTabTyp IS TABLE OF emp%ROWTYPE INDEX BY BINARY_INTEGER;
emp_tab EmpTabTyp;
BEGIN
SELECT * INTO emp_tab FROM emp;
END;
/
[錯誤] PLS-00597(6:15):PLS-00597:表達式 'EMP_TAB' 在INTO列表>錯誤類型 [錯誤]的ORA-00904(6:23):PL/SQL:ORA-00904:無效的標識符
你嘗試過這麼遠嗎? –
我嘗試過使用遊標。我會將我的代碼添加到說明 –