************************************************************************
  ****原文: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 out或OUT的形參相应的实际參数必须是变量;用于存储返回的值;

形參的限制:

形參不能声明长度。可是能够使用%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 徐长亮柱
************************************************************************

【PLSQL】过程procedure形参和参数的更多相关文章

  1. Oracle过程及函数的参数模式,In、out、in out模式

    Oracle过程及函数的参数模式 In.out.in out模式 在Oracle中过程与函数都可以有参数,参数的类型可以指定为in.out.in out三种模式. 三种参数的具体说明,如下图所示: ( ...

  2. PLSQL中的三种参数模式IN、OUT、IN OUT

    原文链接:https://www.cnblogs.com/zbj815/p/6854108.html 1.IN模式 IN模式是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改 ...

  3. SQL记录-PLSQL过程

    PL/SQL过程   子程序是一个程序单元/模块执行特定的任务.这些子程序被组合以形成更大的程序.这基本上是被称为“模块化设计”.子程序可以调用由另一个子程序或程序被称为调用程序. 子程序可以创建: ...

  4. PLSQL过程创建和调用

    存储过程 创建过程范例 create or replace procedure pro_kingsql_p1( p_one in varchar2,--可以传入参数 p_two out varchar ...

  5. Oracle过程及函数的参数模式详解

    一.In.out.in out模式 在Oracle中过程与函数都可以有参数,参数的类型可以指定为in.out.in out三种模式. 三种参数的具体说明,如下图所示: (1)in模式 in模式是引用传 ...

  6. 【297】IDL 过程、函数&关键字参数

    目录: 一.Procedure 1.1 基本说明&定义 1.2 关键字参数 二.Function 2.1 基本说明&定义 2.2 关键字参数 参考:IDL中函数中的带有关键字的参数的使 ...

  7. Oracle plsql存储过程中out模式参数的用法

    在plsql中,存储过程中的out模式的参数可以用来返回数据,相当于函数的返回值.下面是一个小例子. 沿用上一篇的emp表结构和数据. 存储过程如下: create or replace proced ...

  8. Oracle利用过程procedure块实现银行转账

    -- create table account( id ) not null, name ), ,2), constraint a_pk primary key(id) ); --历史表 select ...

  9. sql储存过程in(多个参数)

    一.用sql函数 首先要创建一个截取字符串的函数,新建一个查询,把下面代码复制进去执行. 函数SqlitIn的第一个参数是储存过程要in的字符串,第二个参数是分隔符 CREATE function S ...

随机推荐

  1. ubuntu经常使用的命令摘要

    1.df命令 # df -ha 显示所有文件和分区的使用 # df -h /dev/sda1 显示sda1磁盘使用率 # df -T 显示文件系统名称属于每个分区.区的格式类型(比方ext3) 注:h ...

  2. WebHooks

    WebHooks ASP.NET 5 Beta 7 版本   在 VS2015 发布的同时,微软也发布了 ASP.NET 5 的路线图(详见ASP.NET 5 Schedule and Roadmap ...

  3. 最受欢迎telnet

    点击开关在模拟器,它相当于实PC经由控制线连接真实开关 由于我使用telnet远程登录到交换机的话.因为telnet工作在TCP/IP模型的应用层,现在让应用层通信的话,我首先要保证网络层通信,通信, ...

  4. Razor和HtmlHelper的使用意义

    Razor和HtmlHelper的使用意义 写这篇文档的目的是为了给初学MVC的同伴们介绍在MVC的View中的两个新概念,能有利于我们更快,更好的开发项目.一个是视图引擎,一个是HtmlHlper. ...

  5. linux下一个Oracle11g RAC建立(四)

    linux下一个Oracle11g RAC建立(四) 三.配置共享存储 配置ASM管理准备 1)OCRDISK :存储CRS资源配置信息 2)VOTEDISK:仲裁盘.记录节点状态 3)DataDis ...

  6. 集成 Entity Framework

    ABP 基础设施层——集成 Entity Framework 本文翻译自ABP的官方教程<EntityFramework Integration>,地址为:http://aspnetboi ...

  7. 利用BBED恢复UPDATE改动前的值

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/30615151 实验步骤例如以下: 1.创建表guo_test1 gyj@PROD> ...

  8. C#中的Params、ref、out的区别

    C# Params params params 关键字可以指定在参数数目可变处采用参数的方法参数. 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params ...

  9. Linux查看非root流程执行

    Linux查看非root流程执行 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ps -U root -u root -N PID TTY TIME CMD ...

  10. Eclipse 引导阮卓项目 No projects are found to import解

    我们指示import当项目.由于一些git项目不.project和.classpath档.因此,直接import当然不是现有项目. 下面是解决方式: 1. new Android Project里面换 ...