【发布时间】:2013-03-01 20:55:16
【问题描述】:
谁能告诉我这段代码有什么问题。我的目标是编写一个传递员工姓名的程序,将员工表中的所有姓名和薪水加载到 VARRAY 中,然后在屏幕上打印出姓名和薪水。
CREATE OR REPLACE PROCEDURE VARRAY_Q2
(
PNAME IN VARCHAR2
, PSAL OUT NUMBER
) AS
--declare and create cursor
CURSOR emp_cur IS
SELECT ename,sal
FROM EMP;
TYPE varray_emp IS VARRAY(14) OF emp_Cur%ROWTYPE;
--Creating new instance of varray
x_varray_emp varray_emp := varray_emp();
v_counter NUMBER := 0;
BEGIN
x_varray_emp.EXTEND;
FOR empRecs IN emp_Cur LOOP
--Insert data into the varray
x_varray_emp(v_counter) := empRecs;
dbms_output.put_line(v_counter);
v_counter := v_counter + 1;
END LOOP;
--Loop through the varray and print out all the elements
FOR i IN x_varray_emp.FIRST .. x_varray_emp.LAST
LOOP
dbms_output.put_line(x_varray_emp(i));
END LOOP;
END;
【问题讨论】:
-
1.如果不使用任何参数,为什么要将它们传递给过程? 2. 当您可以直接在光标循环中进行操作时,为什么还要使用 VARRAY? 3. 如果你没有看到输出,你可能想要'set serveroutput on'。
-
你遇到了什么错误?
-
@Glenn 我认为他正在学习如何做到这一点,并且在他弄清楚这部分之后将使用参数和 varray。
-
@Glenn:是的,我正在学习 pl/sql,我必须使用 varray。
-
感谢大家的帮助。
标签: database oracle plsql plsqldeveloper