在.net中如何传递参数给oracle存储过程
答案:2 悬赏:60 手机版
解决时间 2021-02-01 14:31
- 提问者网友:人傍凄凉立暮秋
- 2021-02-01 07:47
在oracle 中可以自定义数据类型,而且存储过程的参数也可以是自定义的数据类型,现在的问题是,如果存储过程的参数是oracle中自定义的,.net要如何调用存储过程。
最佳答案
- 五星知识达人网友:纵马山川剑自提
- 2021-02-01 08:15
调用oracle和ms sql server是一样的
全部回答
- 1楼网友:上分大魔王
- 2021-02-01 09:38
第一种:只读。参数是只读的,不能修改,即调用时传递进来的是常量,或者变量(但变量不能在存储过程中修改)。通常select及dml类型的存储过程传递的是in类型的参数。
第二种:只写。忽略调用语句传递的任何参数,并在函数(过程)内部给这些参数赋值,因此是只写的。(这种情况是在函数或过程内部给参数重新赋值,但重新赋值后的参数是无法被外部调用的(好像游标类型的参数除外))
create or replace procedure "scott"."swap" (firstvalue out
number, secondvalue out number) is
temp number;
begin
temp := firstvalue;
firstvalue := secondvalue;
secondvalue := temp;
end swap;
外部调用:
set serveroutput on;
declare
firstval number;
secondval number;
begin
firstval := 10;
secondval := 20;
scott.swap(firstval,secondval);
dbms_output.put_line('first is ' || firstval);
dbms_output.put_line('second is ' || secondval);
end;
无法在外部访问到firstvalue与secondvalue的值。此时打印出的结果为:
first is
second is
第三种:读或写。这可以完全控制参数,读取传递的参数的值。可以再函数(过程)内部修改参数的值,在退出函数(过程)后,这些参数被赋给在函数内部写入的值,这样就可以返回多个值。(即入口参数写入值后,可以传递到函数(过程)的外部,供外部调用的时候使用)
ps:函数中的返回值为如下几种:
char; varchar2; number; integer; date; boolean; table; record
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.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯