您的位置:首页 > 其它

游标遍历的几种方式

2012-06-15 09:18 155 查看
1.

-- 定义游标

CURSOR c_Student IS

SELECT ID, FIRST_NAME, LAST_NAME, MAJOR FROM T_TEST_STUDENTS;

-- 遍历游标

OPEN c_Student;

LOOP

FETCH c_Student

INTO v_NewId, v_NewFirstName, v_NewLastName, v_NewMajor;

EXIT WHEN c_Student%NOTFOUND;

INSERT INTO T_TEST_STUDENTS

(ID, FIRST_NAME, LAST_NAME, MAJOR)

VALUES

(v_NewId, v_NewFirstName, v_NewLastName, v_NewMajor);

END LOOP;

CLOSE c_Student;

COMMIT;

2.

-- 定义游标

CURSOR c_Student IS

SELECT ID, FIRST_NAME, LAST_NAME, MAJOR FROM T_TEST_STUDENTS;

-- 遍历游标

FETCH c_Student INTO v_NewId, v_NewFirstName, v_NewLastName, v_NewMajor;

WHILE c_Student%FOUND LOOP

INSERT INTO T_TEST_STUDENTS

(ID, FIRST_NAME, LAST_NAME, MAJOR)

VALUES

(v_NewId, v_NewFirstName, v_NewLastName, v_NewMajor);

FETCH c_Student INTO v_NewId, v_NewFirstName, v_NewLastName, v_NewMajor;

END LOOP;

CLOSE c_Student;

COMMIT;

3.

CURSOR c_Student IS

SELECT ID, FIRST_NAME, LAST_NAME, MAJOR FROM T_TEST_STUDENTS;

FOR v_Student in c_Student LOOP

INSERT INTO T_TEST_STUDENTS

(ID, FIRST_NAME, LAST_NAME, MAJOR)

VALUES

(v_Student.ID, v_Student.FIRST_NAME, v_Student.LAST_NAME, v_Student.MAJOR);

END LOOP;

COMMIT;

4.

/* 不需要定义游标

CURSOR c_Student IS

SELECT ID, FIRST_NAME, LAST_NAME, MAJOR FROM T_TEST_STUDENTS;

*/

FOR v_Student in (SELECT ID, FIRST_NAME, LAST_NAME, MAJOR FROM T_TEST_STUDENTS) LOOP

INSERT INTO T_TEST_STUDENTS

(ID, FIRST_NAME, LAST_NAME, MAJOR)

VALUES

(v_Student.ID, v_Student.FIRST_NAME, v_Student.LAST_NAME, v_Student.MAJOR);

END LOOP;

COMMIT;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: