博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【PLSQL】过程procedure形参和参数
阅读量:4629 次
发布时间:2019-06-09

本文共 2281 字,大约阅读时间需要 7 分钟。

************************************************************************
  ****原文:blog.csdn.net/clark_xu 徐长亮的专栏
************************************************************************

1.1 过程procedure

语法:    

         create or replace procedure proc_name

[(arg_name{in | out | in out} type, …)

]

{is | as }

          <local variable declareation>

         begin

                   <executable statements>

         exception

                   <exception handlers>

         end;

        

创建存储过程样例:

         create or replace procedure account_number

         ls

          v_cnt binary_interger;

         begin

          select count(id) into v_cnt from account;

          dbms_output.put_line(‘account number is’ || v_cnt);

         end;

1.1.1  调用存储过程

sql工作表中直接调用:

         exec account_number;

1.1.2  存储过程的參数

比如:

         create or replace procedure proc1

         (p_c1 varchar2,p_c2 out varchar2,p_c3 in out varchar2)

         ls

          v_c1 varchar(10);

         begin

      --p_c1 :=p_c1 || ‘d’; --不能做复制的目标

                   v_c1:=P_c1;

                   p_c2 :=p_c1 || ‘d’;

                   p_c3”=p_c3||’d’;

         end;

调用为:

         exec  proc1 (‘abc’,’abc’,’abc’);保存

调用:

         declare

                   v_c2 varchar2(10) :=’abc’

                   v_c33 varchar2(20) :=’abc’;

         begin

                   proc1(‘abc’,v_c2,v_c3);

                   dbms_output.put_line(v_c2);

                   dbms_outpurt.put_line(v_c3);

         end;

        

1.1.3  形參和实參

创建存储过程中的參数为形參:

         create or replace procedure proc1

         (p_c1 varchar2,p_c2 out varchar2,p_c3 in out varchar2)

         ls

          v_c1 varchar(10);

         v_c1为过程中的局部变量

调用时候括号内的參数为实參

         proc1(‘abc’,v_c2,v_c3);

形參的种类:

         in: 缺省模式。在过程的内部形參是仅仅读的;

         out;过程内部,形參能够读能够写入;调用过程中。不论什么的实參将被忽略,即值不会赋给形參;过程运行完毕后,当前值赋给相应的实參;

         in out:调用过程中。实參的值赋给相应的形參,过程内部,能够读,能够写。过程运行结束后。控制返回给控制环境。形參内存赋给调用时候的实參。

对实參的要求:

         模式为In的形參相应的实參。能够是常量和变量

         某省为IN outOUT的形參相应的实际參数必须是变量;用于存储返回的值;

形參的限制:

形參不能声明长度。可是能够使用%TYPE来进行限制

3.1.4 带參数的过程调用

位置表示法:

         --调用的加入全部參数,实參和形參依照顺序一一相应

名字表示法:

         --调用时给出形參名字。并给出实參。比如

         procname(12,p_outparm +> v_var1,p_inout =) 10)

两种方法能够混合用:

         混用的时候,第一个參数必须依照位置类指定。

         当參数非常多的时候。提供程序可读性,用名字表示法;

3.1.5使用缺省參数

形參能够指明缺省值

         parm_name [mode] type {:=|default} int_value;

位置指示法是,全部缺省的值都放在最后面;

声明时,假设有缺省值,尽量将缺省值放在參数表的末尾;

3.1.6 存储过程的DDL语句

在过程中运行DDL操作,所需的权限必须通过直接授予的方式,不能通过角色授予;

调用过程时候。全部角色都是disable的。即角色所包括的全部权限都不能生效。

调用其它用户的过程,必须有过程的属主赋予运行权限

         grant execut on procname to userame;

         create procedure proc1

         ls

         begin

          execute immediate ‘create table test100(c1 number)’;

end;

************************************************************************
  ****原文:blog.csdn.net/clark_xu 徐长亮柱
************************************************************************

转载于:https://www.cnblogs.com/mengfanrong/p/4601813.html

你可能感兴趣的文章
查看线程的运行状态
查看>>
MYSQL语句
查看>>
判断类之间的父子关系
查看>>
读书笔记——《黑客大曝光》(1/8)
查看>>
java基础小总结(2)
查看>>
HDU(1847)Good Luck in CET-4 Everybody!
查看>>
unity中的UI状态机,用于各界面之间的切换和跳转
查看>>
tar命令-压缩,解压缩文件
查看>>
bootstrap 冻结表格,冻结表头
查看>>
Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)
查看>>
Centos修改系统语言
查看>>
仿人智能控制器的参数简化(已发表于《计算机测量与控制》2013年第4期)
查看>>
Flink学习笔记:Operators之CoGroup及Join操作
查看>>
TSP问题——动态规划
查看>>
kmp练习
查看>>
python xml模块学习
查看>>
[WCF] - Odata Service 访问失败,查看具体错误信息的方法
查看>>
【2019/4/30】周进度报告
查看>>
.net程序员面试题
查看>>
团队分数分配方法——BY 李栋
查看>>