永发信息网

在.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.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯