重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这个存储过程你可以在TEST的环境下查看结果,不过你需要隐式游标来进行操作,那样才能看到,具体步骤如下:
创新互联是一家集网站建设,皇姑企业网站建设,皇姑品牌网站建设,网站定制,皇姑网站建设报价,网络营销,网络优化,皇姑网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
1、首先我们要借助游标,因此需要先定义一个返回类型的游标
create or replace package type_difinition
as
type mycursor is ref cursor;
end type_difinition;
2、改写你的存储过程,要想查看执行SQL后结果需要一个返回参数,这个参数即上面定义的游标
类型
create or replace procedure select_pro(
p_result out type_difinition.mycursor -- 返回结果
)
is
syn_sql varchar2(200) default '';
begin
syn_sql := 'select * from emp';
-- 此处打开游标,并把需执行的SQL赋值给游标
open p_result for syn_sql;
end select_pro;
3、执行编译通过后,右键点击存储过程的名字,跳出框,选择Test一项,进入Test界面
4、点击编译、再点击执行
5、Test界面的底部界面,有个Variable Type value的列表,此时你可以点击Value值里面的
... 按钮,即可查看结果,由于不怎么会应用这个编辑器,本想把图片上传给你,如有不解,再详问,希望回答对楼主有帮助
Oracle中函数/过程返回结果集的几种方式
原文 Oracle中函数/过程返回结果集的几种方式
Oracle中函数/过程返回结果集的几种方式:
以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过.
(1) 返回游标:
return的类型为:SYS_REFCURSOR
之后在IS里面定义变量:curr SYS_REFCURSOR;
最后在函数体中写:
open cur for
select ......;
return cur;
返回cursor的话,那么必须要cursor的手段来处理,不能作为查询语句的目的表。
如果需要在函数返回一个可以供查询语句使用的结果集,那么该函数的返回类型应该定义为一个索引表类型(一个table类型),然后在查询语句中使用table函数将函数返回的索引表转换成查询可以使用的目的表。示例如下:
1. 创建返回索引表所需的类型
create or replace type type_rec is object (idx integer, user_name varchar2(50));
create or replace type type_tb is table of type_rec;
2. 创建函数
create or replace function fn_return_tb
return type_tb
is
o_tb type_tb := type_tb();
i number := 0;
begin
for v_rec in (select 1 as idx, 'Andy' as user_name from dual
union select 2, 'Jack' from dual
union select 3, 'Paul' from dual) loop
o_tb.extend;
i := i + 1;
o_tb(i) := type_rec (v_rec.idx, v_rec.user_name);
end loop;
return o_tb;
end fn_return_tb;
3. 调用函数
select s.*
from table(fn_return_tb()) s;
create or replace procedure TTT(
p_cur out cursor_type.c_type,
p_st_time in date,
p_end_time in date
)
as
。。。
定义一个OUT参数即可。后面调用 需要先定义一个相应类型的变量,然后才能获取到存储过程返回的值。一般可以返回游标,如例子中的,或者执行结果之类的。
如果只返回一个单行值,建议用函数吧。
第一个问题
:
oracle没有inser
into
表
存储过程
的语句格式,所以这个需要你根据实际要求换种思路做吧。
第二个问题:
sqlserver
:'a'+char(10)+'b'
oracle:'a'
||
chr(10)
||
'b'
sqlserver中的
char函数
在oracle中是chr,参数和
返回值
是一样的。