Ⅰ 在Oracle存储过程中查询的数据结果怎样返回
oracle
跟ms不一样。
要返回表的记录数据,只能通过游标,或者自定义对象数组在存储过程中组装好后返回。
Ⅱ Oracle存储过程怎么返回结果
这个存储过程你可以在TEST的环境下查看结果,不过你需要隐式游标来进行操作,那样才能看到,具体步骤如下:
1、首先我们要借助游标,因此需要先定义一个返回类型的游标
create or replace package type_difinition
as
type mycursor is ref cursor;
end type_difinition;
2、改写你的存储过程,要想查看执行sql后结果需要一个返回参数,这个参数即上面定义的游标
类型
create or replace procere 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如何执行存储过程以及如何返回一个table
-- 定义类型
CREATE OR REPLACE TYPE MyTable AS OBJECT(A int, B int, C int);
/
CREATE OR REPLACE TYPE MyTableResult IS TABLE OF MyTable;
/
CREATE OR REPLACE FUNCTION getTestTable return MyTableResult
IS
-- 预期返回结果.
return_Result MyTableResult := MyTableResult();
BEGIN
-- 结果追加一行.
return_Result.EXTEND;
-- 设置结果内容.
return_Result(return_Result.COUNT) := MyTable(A => 1, B=>2, C=>3);
-- 结果追加一行.
return_Result.EXTEND;
-- 设置结果内容.
return_Result(return_Result.COUNT) := MyTable(A => 4, B=>5, C=>6);
-- 结果追加一行.
return_Result.EXTEND;
-- 设置结果内容.
return_Result(return_Result.COUNT) := MyTable(A => 7, B=>8, C=>9);
return return_Result;
END getTestTable;
/
SQL> SELECT
2 A, B, C
3 FROM
4 table( getTestTable() );
A B C
---------- ---------- ----------
1 2 3
4 5 6
7 8 9
SQL>
Ⅳ Oracle通过存储过程如何正确返回数据集
typeFuxjResultSetisrefcursor; 还可以定义其他内容 endFuxjPackage; 再定义Oracle存储过程: (sDMinchar,sMCinchar,pRecCurinoutFuxjPackage.FuxjResultSet)asbeginupdatefuxjExamplesetmc=sMCwheredm=sDM;ifSQL%ROWCOUNT=0thenrollback;openpRecCurfor select'0'resfromal;elsecommit;openpRecCurfor select'1'resfromal;endif;end;和 (sDMinchar,sMCinchar,pRecCurinoutFuxjPackage.FuxjResultSet)asbegininsertintoFuxjExample(dm,mc)values(sDM,sMC);commit;openpRecCurfor select*fromFuxjExample;end;二、在Delphi中调用返回数据集的Oracle存储过程 可以通过TstoredProc或TQuery控件来调用执行返回数据集的存储,数据集通过TstoredProc或TQuery控件的参数返回源码天空 ,注意参数的DataType类型为ftCursor,而参数的ParamType类型为ptInputOutput。 使用TstoredProc执行UpdatefuxjExample的相关设置为: objectStoredProc1:TStoredProc
Ⅳ oracle 存储过程中怎么返回参数
存储过程定义参数时,变量名的后面加上关键字OUT,在存储过程执行中对这个参数进行赋值。等存储过程执行结束之后,可以在sqlplus中获得这个参数返回的值。
Ⅵ oracle中在存储过程中怎么返回值
第一个问题
:
oracle没有inser
into
表
存储过程
的语句格式,所以这个需要你根据实际要求换种思路做吧。
第二个问题:
sqlserver
:'a'+char(10)+'b'
oracle:'a'
||
chr(10)
||
'b'
sqlserver中的
char函数
在oracle中是chr,参数和
返回值
是一样的。
Ⅶ oracle存储过程如何返回记录集
返回一个游标社!
有俩种方法:
一种是声明系统游标,一种是声明自定义游标,然后后面操作一样,参数类型为
in out 或out
(1)声明个人系统游标.(推荐)
create or replace p_temp_procere
(
cur_arg out sys_refcursor; --方法1
)
begin
open cur_arg for select * from tablename;
end
调用
declare
cur_calling sys_refcursor;
begin
p_temp_procere(cur_calling); --这样这个游标就有值了
for rec_next in cur_calling loop
....
end loop;
end;
(2)在包头中申明一个游表类型,然后调用者申明一个这个类型的游标变量,传给返回游标的存储过程 ,存储过程out这个结果集,这种方法很麻烦.游标类型不能像索引表一样使用create or replace type方法来创建,所以只能在包中申明,并且需要使用/来执行,后面的存储过程才认这个游标类型.(不推荐,但是建议要知道并且要会这种方式,毕竟它有它存在的道理)
--定义全局变量
create or replace package pkg_package
as
type type_cursor is ref cursor;
type type_record is record
(
test01 varchar2(32),
test02 varchar2(32),
test03 varchar2(32)
);
end;
/
--创建返回游标的存储过程
create or replace procere p_temp_procere
(
cur_out_arg out pkg_package.type_cursor
)
is
begin
open cur_out_arg for select * from test;
end;
/
--调用
declare
cur_out_arg pkg_package.type_cursor;
rec_arg pkg_package.type_record;
begin
p_temp_procere(cur_out_arg);
fetch cur_out_arg into rec_arg;
dbms_output.put_line(rec_arg.test01);
dbms_output.put_line(rec_arg.test02);
dbms_output.put_line(rec_arg.test03);
end;
Ⅷ oracle存储过程怎么返回结果集
你这不是已经写好了嘛。
外层调用程序只要声明变量mycursor并且作为参数传到emp_pro存储过程中,执行结束后就可以使用了。
Ⅸ oracle存储过程怎样返回查询出来的数据解决方案
create or replace procere p_cnt(
p_time in varchar2,---查询的条件
p_cur out SYS_REFCURSOR)---游标返回
IS
v_sql varchar2(1000) :='';
v_date varchar2(20);
BEGIN
v_date := replace(p_time, '-', '');---时间的格式转换
v_sql := 'select * from dapartment d where d.d_time ='''|| v_date||'''';
END;
OPEN p_cur FOR v_sql;
END p_cnt;
Ⅹ oracle 中运行存储过程作为返回值
oracle可以使用out型参数返回值,例如:
--查询某商品编号是否存在,返回查询状态
createorreplaceprocereproc_getGood
(
param_shopIdnumber,--商品编号
param_flagoutnumber--查询状态0不存在
)
as
declarev_countnumber(1);
begin
selectcount(*)intov_countfromtb_goodswhereshopid=param_shopid;
ifv_count=0then
param_flag:=0;
else
param_flag:=1;
endif;
end;