我是新手,正在学习oracle,我这里遇到一个ieguanyu程序包游标的问题,
一段代码看不明白,请大家解惑,先谢谢啦。SQL> CREATE OR REPLACE PACKAGE BODY cur_pack AS
CURSOR ord_cur(vcode VARCHAR2)
RETURN order_master%ROWTYPE IS
SELECT * FROM order_master WHERE VENCODE=vcode;
PROCEDURE ord_pro(vcode VARCHAR2) IS
or_rec order_master%ROWTYPE;
BEGIN
OPEN ord_cur(vcode);
LOOP
FETCH ord_cur INTO or_rec;
EXIT WHEN ord_cur%NOTFOUND;
DBMS_OUTPUT.PUT_LIne(’返回的值为' || or_rec.orderno);
END LOOP;
END ord_pro;
END cur_pack;
主要是就是输出这句话,
DBMS_OUTPUT.PUT_LIne(’返回的值为' || or_rec.orderno);
为什么返回的值是or_rec.orderno 而不是 or_rec。
or_rec.orderno不是行中的一列么?
而
RETURN order_master%ROWTYPE
不是应该返回一个对象,一整行么?不知道我有没有阐述清楚问题,请大家帮忙解答,再次感谢,在线等待。
一段代码看不明白,请大家解惑,先谢谢啦。SQL> CREATE OR REPLACE PACKAGE BODY cur_pack AS
CURSOR ord_cur(vcode VARCHAR2)
RETURN order_master%ROWTYPE IS
SELECT * FROM order_master WHERE VENCODE=vcode;
PROCEDURE ord_pro(vcode VARCHAR2) IS
or_rec order_master%ROWTYPE;
BEGIN
OPEN ord_cur(vcode);
LOOP
FETCH ord_cur INTO or_rec;
EXIT WHEN ord_cur%NOTFOUND;
DBMS_OUTPUT.PUT_LIne(’返回的值为' || or_rec.orderno);
END LOOP;
END ord_pro;
END cur_pack;
主要是就是输出这句话,
DBMS_OUTPUT.PUT_LIne(’返回的值为' || or_rec.orderno);
为什么返回的值是or_rec.orderno 而不是 or_rec。
or_rec.orderno不是行中的一列么?
而
RETURN order_master%ROWTYPE
不是应该返回一个对象,一整行么?不知道我有没有阐述清楚问题,请大家帮忙解答,再次感谢,在线等待。
--声明一个游标,游标的行类型为order_master%ROWTYPE
CURSOR ord_cur(vcode VARCHAR2) RETURN order_master%ROWTYPE IS
SELECT * FROM order_master WHERE VENCODE = vcode;
--声明一个存储过程,有一个入参vcode
PROCEDURE ord_pro(vcode VARCHAR2) IS
--声明一个order_master表行类型变量or_rec
or_rec order_master%ROWTYPE;
BEGIN
--将存储过程的入参vcode作为游标参数传给游标并打开游标
OPEN ord_cur(vcode);
--游标循环
LOOP
--取一行赋值给or_rec
FETCH ord_cur
INTO or_rec;
--如果游标已没有记录退出循环
EXIT WHEN ord_cur%NOTFOUND;
--打印一行中的一列orderno值到屏幕
DBMS_OUTPUT.PUT_LIne('返回的值为' || or_rec.orderno);
END LOOP;
END ord_pro;
END cur_pack;