plsql存储过程返回结果集
㈠ oracle 函数与存储过程返回结果集
(一)存储过程(例:a表(字段有ano,aname,aage))
createorreplaceproceretest
as
begin
cursorcursor_testisselect*froma;
row_testa%rowtype;
begin
forrow_testincursor_testloop
dbms_output.put_line(row_test.ano||row_test.aname||row_test.aage);
endloop;
endtest;
调用方法:
(1)EXECtest;
(2)begin
test;
end;
/
㈡ 如何在plsql中执行查询存储过程
PLSQL Developer 可以点测试,输入执行后,会有个输出的游标,你点开那个游标就可以看到结果集了.
㈢ plsql如何调用返回结果集的存储过程
先定义包规范:
createorreplacepackage_pkgas
typet_RetSetisREFCURSOR;
proceretest_proc(Condition1varchar2,Condition2varchar2,Condition3varchar2,Condition4varchar2,r_Cursoroutt_RetSet,statusoutint);
end_pkg;
包体创建
createorreplacepackagebody_pkgis
proceretest_proc(Condition1varchar2,Condition2varchar2,Condition3varchar2,Condition4varchar2,r_Cursoroutt_RetSet,statusoutint)as
begin
..........
end_pkg;
调用:
SQL>varcurrefcursor
SQL>varstasint
SQL>exectest(10,:cur,:stas)
PL/SQL过程已成功完成。
SQL>print:cur
SQL>print:stas
希望对你有帮助,有问题再追问吧,望采纳。
㈣ 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;
㈤ 没有在plsql 中写过存储过程,报错帮忙看哈
在存储过程里select必须要有into,以便把select的结果集放入到变量中。
select语句后面要有分号。
end后也要有分号。
㈥ 在PlSQL中oracle匿名块怎么返回结果集
oracle里输出不是print,这个和其他有点不同
给你一个,你直接运行就好
declare
i int;
j int;
begin
j:=10;
i:=1;
while i<j
loop
dbms_output.put_line(rpad(chr(32),10-i,chr(32))||rpad('*',i*2-1,'*'));
i:=i+1;
end loop;
end;
oracle 里输出结果是用dbms_output.put_line这个方式,楼上说的是set serveroutput on是在命令行的操作下执行,用那个显示输出
输出结果集需要用到游标,到时候把游标里的内容也用dbms_output.put_line循环输出就好,如果是一个结果的话,就直接输出结果就OK
㈦ PLSQL中如何执行带有返回值的存储过程
java">先定义包规范:
createorreplacepackage_pkgas
typet_RetSetisREFCURSOR;
proceretest_proc(Condition1varchar2,Condition2varchar2,Condition3varchar2,Condition4varchar2,r_Cursoroutt_RetSet,statusoutint);
end_pkg;
包体创建
createorreplacepackagebody_pkgis
proceretest_proc(Condition1varchar2,Condition2varchar2,Condition3varchar2,Condition4varchar2,r_Cursoroutt_RetSet,statusoutint)as
begin
..........
end_pkg;
调用:
SQL>varcurrefcursor
SQL>varstasint
SQL>exectest(10,:cur,:stas)
PL/SQL过程已成功完成。
SQL>print:cur
SQL>print:stas
希望对你有帮助,有问题再追问吧,望采纳。
㈧ plsql中分析函数和存储过程有什么区别
1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有
2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用.
3.函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等)
4.参数的返回情况来看:
如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可以使用函数;
5.从调用情况来看:
如果在SQL语句(DML或SELECT)中调用的话一定是存储函数或存储的封装函数不可以是存储过程,但调用存储函数的时候还有好多限制以及函数的纯度等级的问题.
6.oracle函数和存储过程最大的区别就在于,函数必须带上一个return返回值,后面跟的是返回值的类型,而存储过程可以不带任何返回值。
7.另外,存储过程和函数同样支持in,out,in out这三种类型的参数,对应的是分别指明输入性的参数、输出型的参数、输入输出型的参数。也就是说如果我们需要返回多个值,除了可以使用存储过程来实现之外,也可以用函数来实现,方法是你将其中一个用return来返回,其他就指明该数据为out参数就可以了。
8.Oracle中存储过程和函数都可以返回值,但是函数必须要返回值,并一般只返回一个值,而存储过程则没有这个限制。从一般应用上来看,如果不需要返回值或者需要多个返回值,使用存储过程,如果只用一个返回值,就使用函数,从一般程序员的习惯上来看,这样更符合思维。