oracle 过程参数 out的调用问题。

作者&投稿:毛龚 (若有异议请与网页底部的电邮联系)
问题一: java中调用oracle无参存储过程报错.问题二: sqlplus如何exec oracle带out参数的存储过程.~

第二个问题:先申明out参数,再执行过程,记得过程中out参数前的冒号。
即:SQL> VAR PROLD2 VARCHAR;
SQL> EXEC PRO_selectById(proId1value,:PROLD2);
回车显示PL/SQL procedure successfully completed即表示执行成功。(注意proId1value表示入参的值)

TYPE typecur IS REF CURSOR 要这样写。
procedure Select_xiaoming(vbalanceid in integer,vbalancenam in VARCHAR2, p_xiaoming out typecur) is begin open p_xiaoming for select t.* from xiaoming t where t.balanceid = vbalanceid and t.balancenam = vbalancenam; end Select_xiaoming;

OUT 参数必须传入的, 下面是一个 OUT 与 IN OUT 参数使用的例子。

SQL> CREATE OR REPLACE PROCEDURE HelloWorld2 (
2 p_user_name IN VARCHAR2,
3 p_out_val OUT VARCHAR2,
4 p_inout_val IN OUT VARCHAR2
5 ) AS
6 BEGIN
7 dbms_output.put_line('Hello ' || p_user_name || p_inout_val || '!');
8 p_out_val := 'A';
9 p_inout_val := 'B';
10 END HelloWorld2;
11 /

Procedure created.

SQL> DECLARE
2 p_outval VARCHAR2(10);
3 p_inoutval VARCHAR2(10) := '~Hi~';
4 BEGIN
5 HelloWorld2('Edward', p_outval, p_inoutval);
6
7 dbms_output.put_line('p_outval=' || p_outval);
8 dbms_output.put_line('p_inoutval=' || p_inoutval);
9 END;
10 /
Hello Edward~Hi~!
p_outval=A
p_inoutval=B

PL/SQL procedure successfully completed.

在所定义的存储过程中,参数的名字后面加上out即可。
例如:
create
or
replace
procedure
pr1(id
in
varchar2,
name
out
varchar2)
is
begin
select
table_name
into
name
from
table1
where
table_id
=
id;
end
pr1;
其中存储过程pr1有两个参数,id是输入参数,只能向该存储过程传入值,用in修饰。name是输出参数,只能返回该存储过程的赋与name的结果,用out修饰。

oracle 存储过程out参数是存储过程会返还一个值给你,你在调用的时候需要设置个变量来接收存储过程返回给你的值吧。

MySQL教程4 MySQL8运算符、函数、存储过程及新增数据类型 17.之创建带有IN和OUT参数的存储过程 学习猿地



不可以


梅县15093909260: oracle的存储过程怎么调用有out值参数的存储过程 -
宋爸通络: 1、你的过程定义的参数是out也就是出参,要往外传值的,执行完这个过程得到的结果放在出参里传给调用它的地方 SELECT COUNT(*) INTO nums FROM students 得到一个数值 放在 nums里面传出去了2、存储过程的固定格式:CREATE OR ...

梅县15093909260: oracle中带有out类型的存储过程应该如何调用?跪求大神指点我 -
宋爸通络: pro5_out本来就是一个存储过程,所以你直接调用就可以了,另外你下面调用的时候写的是一个pl/sql块,所以需要参照pl/sql块的写法,不然的话就会出现value3没有声明的情况,可以参照上面的declare那一段就可以了.

梅县15093909260: oracle 存储过程 out参数的值怎么使用 -
宋爸通络: 输出模式的参数,用于输出值,会忽略传入的值.在子程序内部可以对其进行修改. 输出:子程序执行完毕后,out模式参数最终的值会赋值给调用时对应的. 注意:out模式参数的调用,必须通过变量.--测试out模式的存储过程 CREATE OR ...

梅县15093909260: oracle中如何定义一个使用out参数的存储过程 -
宋爸通络: 在所定义的存储过程中,参数的名字后面加上out即可.例如:create or replace procedure pr1(id in varchar2, name out varchar2) is begin select table_name into name from table1 where table_id = id; end pr1; 其中存储过程pr1有两个参数,id是输入参数,只能向该存储过程传入值,用in修饰.name是输出参数,只能返回该存储过程的赋与name的结果,用out修饰.

梅县15093909260: oracle怎么调用带参数的存储过程 -
宋爸通络: sqlplus或者PL/SQL SQL窗口输入(单独调用存储过程):无参数EXEC 过程名;或者BEGIN过程名END; IN 参数EXEC 过程名(入参数..);或者BEGIN过程名(入参数...)END; OUT参数,IN OUT参数variable 绑定变量名 数据类型; //定义一个变量接收出参数的值;EXEC 过程名(:绑定变量名);

梅县15093909260: oracle 存储过程 out参数 -
宋爸通络: 首先,恭喜你猜对了,要去掉参数. 想必这个规定是oralce本身定义好的规则. 仔细推敲一下,我想道理是这样的: 假设规定了传入参数的长度,一旦你传入的实际变量的长度超过定义的长度,那oralce怎么办? 还需要增加校验和提示吧? 这样以来莫不如不超过该类型的长度即可,大家用起来也方便:)猜想你是和定义变量弄混了.变量的定义是要指定长度的.

梅县15093909260: oracle中in和out用法 -
宋爸通络: 开头部分声明的是这个存储过程的参数,is部分声明的是存储过程内部使用的变量.相当于程序中函数的参数和函数的内部变量的关系.--- 以上,希望对你有所帮助.

梅县15093909260: oracle中怎么执行带有输出参数的存储过程,在程序中我知道怎么调用, -
宋爸通络: --存储过程的创建 set serveroutput on; create or replace procedure select_dept( num_deptno in number,--定义in模式变量,要求输入部门编号 var_dname out dept.dname%type,--定义out模式变量,可以存储部门名称并输出 var_loc out dept.loc...

梅县15093909260: Oracle存储过程USING OUT用法及用处?? -
宋爸通络: 动态SQL using out v_erortx意思是insert into tab()......"这句中的变量用传出参数v_erortx绑定,比如动态SQL中有一个过程,而该过程的有个OUT 参数,此时就可以用USING OUT 的方式 Execute Immediate 'begin mypro1(:1,:2); end;' Using In 1,Out v_erortx;

梅县15093909260: oracle存储过程中使用游标作为out类型参数,求救! -
宋爸通络: 1、你定义的【RET_CURSOR_VALUE】是一个光标变量,当他作为参数传入过程【GET_EMPINFOBYDEPNO】时候已经被打开(就是open...for),在主程序中再度打开是没有必要的也是错误的(且光标变量只能用【open...for】的形式打开...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网