oracle执行存储过程带参数
1. oracle的存储过程的调用和写法
在Oracle PL/SQL中,存储过程的调用与编写方法如下:
首先,在"测试"窗口中输入以下代码进行测试:
dbms.output.put_line(param)类似于JSP中的out.println(),用于在过程中查看错误信息,可以在过程中添加。
示例代码如下:
declare param varchar2(10); begin param :='week';--这是你的输入参数 proc_rpt_result(param); dbms_output.put_line(param);--这是过程处理打印结果 end;
这段代码展示了如何定义一个变量,设定输入参数,调用存储过程,并打印结果。
接下来,我们来看看游标的使用。游标是一种用于存储和处理查询结果的特殊变量。例如:
select xx from xxx 有多个返回值,可以将这些返回值存储到游标cursor中,然后通过open打开游标,逐个处理这些值。
你可以把游标看作是一个数组,select操作将查询结果存入游标,open操作则取出这些值进行处理。
下面是一个使用游标的示例代码:
declare cursor c1 is select * from emp; begin open c1; loop fetch c1 into :col1, :col2; exit when c1%notfound; dbms_output.put_line(col1 || ', ' || col2); end loop; close c1; end;
这段代码定义了一个游标,从emp表中获取数据,并逐行打印这些数据。
以上就是关于Oracle存储过程的调用和编写方法,以及如何使用游标处理查询结果的简单介绍。
2. oracle中,一个存储过程怎么调用另一个存储过程这两个存储过程都带有各自的参数。直接调用似乎不行。
直接调用就可以了。举个例子把 B 存储过程调用A 存储过程。
PROCEDURE A (p_1 in number,p_2 out number)
is
v_1 number;
begin
V_1:=p_1;
p_2:=v_1;
end A;
(1)如果A 与B同在一个package里面的话。那么 B里面直接可以调用A
PS:如果A,B在同一个Package 中无法调用的话,那么很可能是A,B在Spec里没有声明。一个package包含Spec 和Body,两层。不能调用很可能没有声明。声明后应该ok!
PROCEDURE B(p_1 in number)
is
v_result number;
begin
v_result =A(p_1);
end B;
其中v_result就是调用A的结果,A的返回值。
(2)如果A与B不在同一个package的话
那么B在调用A 的时候,需要加上pkg的名字
比如:A 存储过程在pkg :xxom_test_pkg 中
PROCEDURE B(p_1 in number)
is
v_result number;
begin
v_result = xxom_test_pkg .A(p_1);
end B;
----------------------------------------------------------
以上简单介绍了存储过程的调用。
希望对你有帮助
3. oracle中怎么执行带有输出参数的存储过程,在程序中我知道怎么调用,
1、新建一个存储过程(Procere)。