问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle存储过程如何返回一个结果集,一定要用ref cursor吗?存储过程在pl/sql中是怎么调用的,越详细越好

发布网友 发布时间:2022-04-08 03:49

我来回答

4个回答

热心网友 时间:2022-04-08 05:19

知道包这个概念么?
---创建包头

CREATE OR REPLACE PACKAGE PKG_User IS

TYPE T_CURSOR IS REF CURSOR;
PROCEDURE GET(p_user_id in varchar2,cur_out OUT T_CURSOR);
END PKG_User;
--创建包体

CREATE OR REPLACE PACKAGE BODY PKG_User IS
----Get by KeyId----------
PROCEDURE GET(p_user_id in varchar2,cur_out OUT T_CURSOR) IS
BEGIN
OPEN cur_out FOR
select user_id,
user_pid,
uname,
status,
nvl(company_id,-1) company_id,
nvl(dept_id,-1) dept_id,
nvl(station_id,-1) station_id,
nvl(subsys,-1) subsys,
nvl(user_type,-1) user_type,
keys
from TB_USER
where upper(user_id)=upper(p_user_id);
END ;
end PKG_User;
调用使用PKG_User.GET

热心网友 时间:2022-04-08 06:37

CREATE OR REPLACE TYPE Varchar2Varray IS VARRAY(100) of VARCHAR2(40);
/
CREATE OR REPLACE FUNCTION sf_split_string (string VARCHAR2, substring VARCHAR2) RETURN Varchar2Varray IS
len integer := LENGTH(substring);
lastpos integer := 1 - len;
pos integer;
num integer;
i integer := 1;
ret Varchar2Varray := Varchar2Varray(NULL);
BEGIN
LOOP
pos := instr(string, substring, lastpos + len);
IF pos > 0 THEN --found
num := pos - (lastpos + len);
ELSE --not found
num := LENGTH(string) + 1 - (lastpos + len);
END IF;
IF i > ret.LAST THEN
ret.EXTEND;
END IF;
ret(i) := SUBSTR(string, lastpos + len, num);
EXIT WHEN pos = 0;
lastpos := pos;
i := i + 1;
END LOOP;
RETURN ret;
END;
/

测试:
SQL> select * from table (cast (
sf_split_string('ABC,DEFGH,IJKLMN,OPQRST', ',') as Varchar2Varray) );

热心网友 时间:2022-04-08 08:11

execute 过程来自:求助得到的回答

热心网友 时间:2022-04-08 10:03

--1.存储过程
create or replace procere print(msg varchar2)
is
begin
dbms_output.put_line(msg);
end;

--1.1 调用存储过程
execute print('helloworld');追问应该是数据集,返回值类似于sql server中的select * from table_name,如果在oracle存储过程里面这样写的话就会报错

追答"dbms_output" 是oracle存储过程的输出容器,
"cursor" 是常用的查询结果集合遍历方法;

不定义游标在存储过程中使用查询结果的另一中方法示例:

FOR rec IN (SELECT table_name FROM user_tables)
LOOP
dbms_output.put_line (rec.table_name);
END LOOP;

参考资料:http://zhidao.baidu.com/question/74047685.html

来自:求助得到的回答
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...换手机号显示你以设置拒收微信登陆.换绑.注册短信怎么解决? 伊拉克战争是哪些国家发动的?请快回答,我有急用! 二零零三年三月谁发动了对伊拉克的战争 西门子、美的、容声三个门的冰箱那个牌子又省电又实用? 海尔冰箱BCD-206 SCFM 放3档工作多长时间 ,停多长时间正常 海尔BCD-206SCFM基本参数 6年级上册数学练习册百分数50到53页答案 小学数学六年级(上):帮你学数学口算练习册2008年印刷版信息 小学数学六年级(上):帮你学数学口算练习册2010年印刷版信息 小学六年级数学上册百分数练习册《课堂作业本》答案64面第2题 ThinkPad T470s和ThinkPadX1 Yoga 2017有什么区别 联想笔记t460s和t470s和x1c那个好 该买ThinkPad X1 Carbon 2017 么 国家认可又松大学毕业证吗? 韩国又松大学怎么样?听说有个SOLBRIDGE不知道怎么样呢? 韩国又松大学是不是野鸡大学 think pad x1 carbon2017与t470s哪个好 韩国又松大学留学好毕业嘛?国内认可度高不高 请问又松大学怎么样啊,我要上的大学是与它中外合作的,想问一下 退休老师病逝后丧葬费及还应该发多少个月工资 韩国又松大学怎么样? 退休教师享受节日福利待遇吗? 韩国又松大学留学回来在中国的认可度高嘛? 退休教师死亡后能领多少个月工资 辩护人朴镇宇扮演者 退休教师死亡后补发几个月工资 补发退休教师涨工资 八十多岁退休教师去世后还有多少月工资补助 韩国又松大学? 有人说退休教师每年能拿18个月的退休工资,这是真的吗? html5自适应单页面 怎么样做自适应的页面,高度宽度岁分辨率的改变而变化 怎么查看网页是不是自适应 用ps自动切成的网页怎么不会自适应,要怎么改? 掌中之物的内容简介 《掌中之物》改名后高调上线,这个电视剧主要讲了什么? 网页设计中,使用自适应宽度有什么缺点吗 蘑菇的外形是什么样的啊? 什么样的蘑菇有毒 笑菇是什么样的蘑菇?学名是什么? 圆球一样的蘑菇,内部有灰色,这是什么菇呀,能吃吗 小程序开发对企业经营有什么好处吗? 开发微信小程序效果怎么样 小程序开发对企业的好处到底是什么? 小程序有效果吗? 那个512g固态硬盘和1t机械硬盘哪个好 西数550 1tb固态硬盘和512 gb高速固定硬盘哪个好a? 512G M2 PCIe SSD西数S78-440F850-W36? word2007怎么更改页码 2007版word页码怎么编辑