可以! 例: SET SERVERIUTPUT ON DECLARE R_emp EMP%ROWTYPE; //是定义在表上的. CURSOR c_emp IS SELECT * FROM emp; BEGIN OPEN c_emp; LOOP FETCH c_emp INTO r_emp; EXIT WHEN c_emp%NOTFOUND; DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||r_emp.ename||'is'|| r_emp.salary); END LOOP; CLOSE c_emp; END;
gslcn 你好! 能举个例子吗?
BEGIN FOR emp_record IN (SELECT ename,sal FROM emp) LOOP dbms_output.PUT_LINE(emp_record.ename); END LOOP; END; ---------------------------- DECLARE CURSOR emp_cursor IS SELECT empno,ename FROM emp; BEGIN FOR emp_record IN emp_cursor LOOP dbms_output.put_line(emp_record.empno||emp_record.ename); END LOOP; END; ---------------------------------- 建议你使用以上两种形式的游标,变量类型的定义,打开、关闭游标都是 隐藏完成的,就不用考虑那么多了。
是啊 比如 EMP 表里有 ID NAME 字段,分别是 NUMBER,VARCHAR2 类型 那么你定义变量的时候可以是 VAL1 EMP.ID%TYPE, VAL2 EMP.NAME%TYPE; CURSOR C_EMP IS SELECT ID,NAME FROM EMP ; ... OPEN C_EMP; FETCH C_EMP INTO VAL1,VAL2; CLOSE C_EMP;
其实你不要管什么类型,定义变量是就定义成: 表.字段%type就行了
还有其他的类型???
例:
SET SERVERIUTPUT ON
DECLARE
R_emp EMP%ROWTYPE; //是定义在表上的.
CURSOR c_emp IS SELECT * FROM emp;
BEGIN
OPEN c_emp;
LOOP FETCH c_emp INTO r_emp;
EXIT WHEN c_emp%NOTFOUND;
DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||r_emp.ename||'is'|| r_emp.salary);
END LOOP;
CLOSE c_emp;
END;
你好!
能举个例子吗?
FOR emp_record IN
(SELECT ename,sal FROM emp)
LOOP
dbms_output.PUT_LINE(emp_record.ename);
END LOOP;
END;
----------------------------
DECLARE
CURSOR emp_cursor IS
SELECT empno,ename FROM emp;
BEGIN
FOR emp_record IN emp_cursor LOOP
dbms_output.put_line(emp_record.empno||emp_record.ename);
END LOOP;
END;
----------------------------------
建议你使用以上两种形式的游标,变量类型的定义,打开、关闭游标都是
隐藏完成的,就不用考虑那么多了。
EMP 表里有 ID NAME 字段,分别是 NUMBER,VARCHAR2 类型
那么你定义变量的时候可以是 VAL1 EMP.ID%TYPE, VAL2 EMP.NAME%TYPE;
CURSOR C_EMP IS
SELECT ID,NAME FROM EMP ;
...
OPEN C_EMP;
FETCH C_EMP INTO VAL1,VAL2;
CLOSE C_EMP;