PL/SQL存储过程中in、out、in out用法
1.in参数:
用于接收参数,在子程序内部,不能进行修改。当参数没有写模式的时候,默认的参数模式:in。
例如:v_b number,其没有声明 in、out、in out,所以默认为in,in参数,则v_b 不能在子程序内部修改值。
2.out参数:
out参数,输出模式的参数,用于输出值,会忽略传入的值。在子程序内部可以对其进行修改。
实例:
create or replace procedure p(v_a in number,v_b number,v_ret out number,v_temp in out number) is begin dbms_output.put_line('v_ret---'||v_ret);--此处拿不到传入参数v_ret的值 v_ret := 100;--OUT 参数可以在子程序中赋值 dbms_output.put_line('v_ret---'||v_ret); --输出的 为程序内部的值 100 if(v_a>v_b) then v_ret := v_a; else v_ret :=v_b; end if; v_temp := v_temp+1; end; --执行过程 declare v_a number:=1; v_b number:=2; v_ret number :=1; v_temp number :=5; begin p(v_a,v_b,v_ret ,v_temp); --v_ret的值不会传入进去 dbms_output.put_line(v_ret); --输出的值为2 dbms_output.put_line(v_temp); --输出的值为6 end;
最终得到的输出结果
v_ret--- v_ret---100 2 6
3.in out参数:
能接收传入的实参值;在子程序内部可以修改,可以输出。
实例:
create or replace procedure p(v_a in number,v_b number,v_ret out number,v_temp in out number) is begin dbms_output.put_line('v_temp---'||v_temp);--对于 IN OUT 参数,此处能拿到值 v_temp := 100;--IN OUT 参数除了可以拿到入参的值,也可以在子程序中赋值 dbms_output.put_line('v_temp---'||v_temp); if(v_a>v_b) then v_ret := v_a; else v_ret :=v_b; end if; v_temp := v_temp+1; end; --执行存储过程 declare v_a number:=1; v_b number:=2; v_ret number :=1; v_temp number :=5; begin p(v_a,v_b,v_ret ,v_temp); dbms_output.put_line(v_ret); dbms_output.put_line(v_temp); end;
最终得到的输出结果
v_temp---5 v_temp---100 2 101
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
2020-04-26 Oracle左连接、右连接、全外连接以及(+)号用法