如果返回的记录只有一条,可以 select * into 一个记录类型的变量 from t;如果返回多的记录有多条,就要使用光标了CREATE OR REPLACE PROCEDURE ProcedureTest2 IS -- 定义光标 CURSOR c1 IS SELECT * FROM t; BEGIN -- 光标FOR循环 FOR r IN c1 LOOP --对r,即每一条记录进行使用和处理。 END LOOP; END ProcedureTest2;
我想在loop 里实现 select xuehao,xingming,chengji from t 该怎么写
游标里面是表的一条记录: select * into v_tmp from t; 声明时定义v_tmp t%rowtype; loop时可以直接用: v_tmp.xuehao,v_tmp.xingming,v_tmp.chengji。。
可以这样 [code] DECLARE v_xuehao t.xuehao%TYPE; v_xingming t.xingming%TYPE; v_xingming t.chengji%TYPE; CURSOR a IS select xuehao,xingming,chengji from t BEGIN OPEN a; LOOP FETCH a INTO v_xuehao,v_xingming,v_xingming; dbms_output.put(v_xuehao||v_xingming||v_xingming); EXIT WHEN a%NOTFOUND; END; [/code]
DECLARE v_xuehao t.xuehao%TYPE; v_xingming t.xingming%TYPE; v_xingming t.chengji%TYPE; CURSOR a IS select xuehao,xingming,chengji from t BEGIN OPEN a; LOOP FETCH a INTO v_xuehao,v_xingming,v_xingming; dbms_output.put(v_xuehao||v_xingming||v_xingming); EXIT WHEN a%NOTFOUND; END;
select * into 一个记录类型的变量 from t;如果返回多的记录有多条,就要使用光标了CREATE OR REPLACE PROCEDURE ProcedureTest2 IS
-- 定义光标
CURSOR c1 IS SELECT * FROM t;
BEGIN
-- 光标FOR循环
FOR r IN c1
LOOP
--对r,即每一条记录进行使用和处理。
END LOOP;
END ProcedureTest2;
select * into v_tmp from t;
声明时定义v_tmp t%rowtype;
loop时可以直接用:
v_tmp.xuehao,v_tmp.xingming,v_tmp.chengji。。
[code]
DECLARE
v_xuehao t.xuehao%TYPE;
v_xingming t.xingming%TYPE;
v_xingming t.chengji%TYPE;
CURSOR a IS select xuehao,xingming,chengji from t
BEGIN
OPEN a;
LOOP
FETCH a INTO v_xuehao,v_xingming,v_xingming;
dbms_output.put(v_xuehao||v_xingming||v_xingming);
EXIT WHEN a%NOTFOUND;
END;
[/code]
v_xuehao t.xuehao%TYPE;
v_xingming t.xingming%TYPE;
v_xingming t.chengji%TYPE;
CURSOR a IS select xuehao,xingming,chengji from t
BEGIN
OPEN a;
LOOP
FETCH a INTO v_xuehao,v_xingming,v_xingming;
dbms_output.put(v_xuehao||v_xingming||v_xingming);
EXIT WHEN a%NOTFOUND;
END;