当前位置:首页 » 存储配置 » oracle存储过程返回列表

oracle存储过程返回列表

发布时间: 2022-07-24 00:36:30

A. oracle中在存储过程中怎么返回值

第一个问题

oracle没有inser
into

存储过程
的语句格式,所以这个需要你根据实际要求换种思路做吧。
第二个问题:
sqlserver
:'a'+char(10)+'b'
oracle:'a'
||
chr(10)
||
'b'
sqlserver中的
char函数
在oracle中是chr,参数和
返回值
是一样的。

B. 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值里面的
... 按钮,即可查看结果,由于不怎么会应用这个编辑器,本想把图片上传给你,如有不解,再详问,希望回答对楼主有帮助

C. 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>

D. 如何在oracle存储过程中返回数据集

返回记录集:
CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;
PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
END pkg_test;
/

E. ORACLE 存储过程怎么返回临时表结果集

我刚做的,参考下:
SQL> CREATE GLOBAL TEMPORARY TABLE REPROTTEST(
2 ID NUMBER,
3 ANAME VARCHAR2(20)
4 ) ON COMMIT DELETE ROWS;(也可以用PRESERVER ROWS,看实际需求)

Table created

SQL> create or replace procere report_month_responsibility(
2 o_cur out sys_refcursor)
3 as
4 begin
5 insert into reprottest(id,aname) values(1,'1');
6 open o_cur for select * from reprottest;
7 end report_month_responsibility;
8 /

Procere created

SQL> set serverout on
SQL> declare
2 v_id number;
3 v_aname varchar2(20);
4 o_cur sys_refcursor;
5 begin
6 report_month_responsibility(o_cur);
7 fetch o_cur into v_id,v_aname;
8 while o_cur%found loop
9 dbms_output.put_line('输出结果:'||v_id||','||v_aname);
10 fetch o_cur into v_id,v_aname;
11 end loop;
12 commit;
13 end;
14 /

输出结果:1,1

PL/SQL procere successfully completed

你的那个ORA-01031: insufficient privileges,是权限不足的问题。
SQL代码:

CREATE GLOBAL TEMPORARY TABLE REPROTTEST(
ID NUMBER,
ANAME VARCHAR2(20)
) ON COMMIT DELETE ROWS;

create or replace procere report_month_responsibility(
o_cur out sys_refcursor)
as
begin
insert into reprottest(id,aname) values(1,'1');
open o_cur for select * from reprottest;
end report_month_responsibility;

declare
v_id number;
v_aname varchar2(20);
o_cur sys_refcursor;
begin
report_month_responsibility(o_cur);
fetch o_cur into v_id,v_aname;
while o_cur%found loop
dbms_output.put_line('输出结果:'||v_id||','||v_aname);
fetch o_cur into v_id,v_aname;
end loop;
commit;
end;
/

F. oracle存储过程 查3张表返回结果集

select b.FROM_ACCOUNT, b.card_bin ,b.bank_name,b.TRADE_TIME,b.pay_orderid
from order o, bill b
where o.pay_orderid = b.pay_orderid
and o.status =2
union all
select b.FROM_ACCOUNT, b.card_bin ,b.bank_name,b.TRADE_TIME,b.pay_orderid
from order o,bank_card_record b
where o.pay_orderid = b.pay_orderid
and (o.status =2 or o.status is null)

G. oracle的存储过程查询整张表返回结果

创建返回结果集的函数

SQL> create or replace package pkg_HelloWorld as
2 -- 定义ref cursor类型
3 type myrctype is ref cursor;
4 --函数申明
5 function getHelloWorld return myrctype;
6 end pkg_HelloWorld;
7 /

程序包已创建。

SQL> CREATE OR REPLACE package body pkg_HelloWorld as
2 function getHelloWorld return myrctype
3 IS
4 return_cursor myrctype;
5 BEGIN
6 OPEN return_cursor FOR
7 SELECT 'Hello 1' AS a, 'World 1' AS B FROM al
8 UNION ALL
9 SELECT 'Hello 2' AS a, 'World 2' AS B FROM al;
10 return return_cursor;
11 END getHelloWorld;
12 end pkg_HelloWorld;
13 /

程序包体已创建。

注:Oracle 这里的函数,是一个返回游标类型的函数, 不是像 SQL Server 的那种叫 “表值函数” 的东西。

因此下面的写法会报错。

SQL> SELECT * FROM pkg_HelloWorld.getHelloWorld();
SELECT * FROM pkg_HelloWorld.getHelloWorld()
*
第 1 行出现错误:
ORA-00933: SQL 命令未正确结束

SQL> SELECT pkg_HelloWorld.getHelloWorld() FROM al;

PKG_HELLOWORLD.GETHE
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

A B
------- -------
Hello 1 World 1
Hello 2 World 2

H. Oracle存储过程返回表记录总数

你应当吧这个结果放到变量里,存储过程是没有返回值的,这样写是不对的,这样
select语句是不支持的create or replace procere ii
is
a varchar2(25);
begin
select count(*) into a from employees;
end ii;

这样就可以执行了,
不过你可以把值放到数组里,自用打印命令打印出来

I. oracle存储过程如何返回记录集

存储过程:
CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;

PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
END pkg_test;
/

CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE get (p_id NUMBER, p_rc OUT myrctype)
IS
sqlstr VARCHAR2 (500);
BEGIN
IF p_id = 0 THEN
OPEN p_rc FOR
SELECT ID, NAME, sex, address, postcode, birthday
FROM student;
ELSE
sqlstr :=
'select id,name,sex,address,postcode,birthday
from student where id=:w_id';
OPEN p_rc FOR sqlstr USING p_id;
END IF;
END get;
END pkg_test;
/
存储函数:
CREATE OR REPLACE
package pkg_test as
type myrctype is ref cursor;

function get(intID number) return myrctype;
end pkg_test;
/

CREATE OR REPLACE
package body pkg_test as
function get(intID number) return myrctype is
rc myrctype; --定义ref cursor变量
sqlstr varchar2(500);
begin
if intID=0 then
--静态测试,直接用select语句直接返回结果
open rc for select id,name,sex,address,postcode,birthday from student;
else
--动态sql赋值,用:w_id来申明该变量从外部获得
sqlstr := 'select id,name,sex,address,postcode,birthday from student where id=:w_id';
--动态测试,用sqlstr字符串返回结果,用using关键词传递参数
open rc for sqlstr using intid;
end if;

return rc;
end get;

end pkg_test;
/

热点内容
文件夹两孔 发布:2024-10-06 23:48:53 浏览:351
ftp工具分析 发布:2024-10-06 23:48:51 浏览:157
服务器被游戏封机器码怎么办 发布:2024-10-06 23:46:10 浏览:161
股票java 发布:2024-10-06 23:38:46 浏览:291
安卓算法 发布:2024-10-06 23:14:20 浏览:183
域名访问404 发布:2024-10-06 23:08:52 浏览:708
访问笔录模版 发布:2024-10-06 22:36:54 浏览:140
多用途编程 发布:2024-10-06 22:35:58 浏览:618
msde2000数据库下载 发布:2024-10-06 22:33:35 浏览:45
什么配置可以算神机 发布:2024-10-06 21:52:09 浏览:424