【发布时间】:2015-01-14 02:10:48
【问题描述】:
谁能帮我解决这个问题。
我需要编写一个 pl/sql 查询,它将 emp 中的 deptno 作为输入并返回 ename、sal 以及 dept 表中的所有列。(我不想单独声明这些列,而是我想使用 %行类型)。
我已经尝试了多种方法。下面提到其中之一。 创造——
CREATE OR REPLACE PROCEDURE PROC01(
DNO EMP.DEPTNO%TYPE,
REC OUT DEPT%ROWTYPE,
NAME OUT EMP.ENAME%TYPE,
SAL OUT EMP.SAL%TYPE
, MY_CURSOR OUT SYS_REFCURSOR)
IS
BEGIN
OPEN MY_CURSOR FOR
SELECT D.*, ENAME, SAL
FROM EMP, DEPT D
WHERE EMP.DEPTNO = D.DEPTNO
AND D.DEPTNO = DNO;
END PROC01;
/
--Declare & Execution
DECLARE
REC DEPT%ROWTYPE;
NAME EMP.ENAME%TYPE;
SAL EMP.SAL%TYPE;
MY_CURSOR SYS_REFCURSOR;
BEGIN
PROC01(&DNO,REC, NAME, SAL, MY_CURSOR);
LOOP
FETCH MY_CURSOR INTO REC, NAME, SAL;
EXIT WHEN MY_CURSOR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(REC.DNAME||' '||NAME||' '||SAL);
END LOOP;
CLOSE MY_CURSOR;
END;
/
错误:-- INTO 列表中的表达式“REC”类型错误 提前谢谢...
【问题讨论】:
-
那么您在使用这种方法时遇到了什么问题?
标签: oracle stored-procedures procedures cursors rowtype