如何获取游标的每条记录
时间:2011-12-06
来源:互联网
在存储过程中创建一游标,游标里保存的是某一用户的订单,我想通过输入用户ID就能获取该用户的订单,如果用游标实现?(出参定义为数组?)
作者: sunny62520 发布时间: 2011-12-06
SQL code
供参考
DECLARE TYPE INFO IS RECORD( BNAME BOOK.BOOK_NAME%TYPE, WRITER BOOK.WRITER%TYPE, PRICE BOOK.PRICE%TYPE); RES INFO; CURSOR C_INFO(P IN NUMBER DEFAULT 30) IS SELECT DISTINCT BOOK_NAME, WRITER, PRICE FROM BOOK WHERE PRICE > P; BEGIN OPEN C_INFO(35); LOOP FETCH C_INFO INTO RES; DBMS_OUTPUT.PUT('ÊéÃû: ' || RES.BNAME||' '); DBMS_OUTPUT.PUT('×÷Õß: ' || RES.WRITER||' '); DBMS_OUTPUT.PUT_LINE('¼Û¸ñ: ' || RES.PRICE||' '); EXIT WHEN C_INFO%NOTFOUND; END LOOP; CLOSE C_INFO; END;
供参考
作者: yinan9 发布时间: 2011-12-06
引用 1 楼 yinan9 的回复:
SQL code
DECLARE
TYPE INFO IS RECORD(
BNAME BOOK.BOOK_NAME%TYPE,
WRITER BOOK.WRITER%TYPE,
PRICE BOOK.PRICE%TYPE);
RES INFO;
CURSOR C_INFO(P IN NUMBER DEFAULT 30) IS
SELECT DI……
SQL code
DECLARE
TYPE INFO IS RECORD(
BNAME BOOK.BOOK_NAME%TYPE,
WRITER BOOK.WRITER%TYPE,
PRICE BOOK.PRICE%TYPE);
RES INFO;
CURSOR C_INFO(P IN NUMBER DEFAULT 30) IS
SELECT DI……
我想的是,在一个存储过程中创建游标,然后这个存储过程有out的参数,out的就是查询的每条记录,然后调用这个存储过程就能过的返回的参数,,,请问这样该怎么做?是得返回数组吗?
作者: sunny62520 发布时间: 2011-12-06
引用 2 楼 sunny62520 的回复:
引用 1 楼 yinan9 的回复:
一般不做返回,为什么不能在整个procedure中完成呢? 引用 1 楼 yinan9 的回复:
作者: yinan9 发布时间: 2011-12-06
可以写一个自定义包,自定义一个复合变量。
然后在写相关的procedure时候,定义你的参数为你自定义的复合变量类型。
这样就可以存储游标的返回值了。
然后在写相关的procedure时候,定义你的参数为你自定义的复合变量类型。
这样就可以存储游标的返回值了。
作者: yinan9 发布时间: 2011-12-06
SQL code
--创建类型 create or replace package mytest is -- Author : ADMINISTRATOR -- Created : 2008-5-13 11:19:28 -- Purpose : test TYPE record_type IS RECORD( code VARCHAR2(18), p_name VARCHAR2(16)); TYPE ref_cur_type IS REF CURSOR; end mytest; CREATE OR REPLACE TYPE table_type IS TABLE OF record_type; --创建过程 CREATE OR REPLACE PROCEDURE testproc( v_ref_cur out mytest.ref_cur_type) IS v_record record_type; v_table table_type := table_type(); BEGIN FOR i IN 1 .. 9 LOOP v_record := NEW record_type(''45212319830810435'' || i, ''侯廷文'' || i); v_table.EXTEND; v_table(i) := v_record; END LOOP; OPEN v_ref_cur FOR SELECT * FROM TABLE(CAST(v_table AS table_type)); END testproc;
作者: yinan9 发布时间: 2011-12-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28