************************************************************************
  ****原文: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. AIX6.1/11.2.0.3在有关数据库SWAP一个BUG

    昨天南京到客户服务数据库的优化调整,其中新上线,经过审查alert.log当日志现在是在过去一段时间内取得,每隔几个小时的时间滞后,班会报似的内容: Thu Aug 21 09:01:26 2014 ...

  2. 很酷的CSS3仿Facebook登录表单

    原文:很酷的CSS3仿Facebook登录表单 今天看到一款很不错的CSS3登录表单,外观是仿Facebook的登录表单,还挺不错的,另外也支持简单的表单输入框验证.下图是表单的效果图: 我们也可以在 ...

  3. 添加和删除行的能力table(能够编辑的表的内容)

    页面文件 <html> <head> <meta http-equiv="Content-Type" content="text/html; ...

  4. Codeforces 420 B. Online Meeting

    B. Online Meeting time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  5. [Unity3D]Unity3D游戏开发之Logo渐入渐出效果的实现

    ---------------------------------------------------------------------------------------------------- ...

  6. 从客户端(FCKeditor1="<p>...")中检测到有潜在危险的 Request.Form 值。

    从客户端(FCKeditor1="<p>...")中检测到有潜在危险的 Request.Form 值. 说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理 ...

  7. 网络编程easy错误点-手知道

    通常的网络编程socket编程.实际上.socket编程并不仅仅是满足网络间不同主机之间的通信,它也能实现同一台主机上不同进程间的通信需求. 其体如今创建socket时的參数的不同: int sock ...

  8. Oracle数据库之开发PL/SQL子程序和包

    Oracle数据库之开发PL/SQL子程序和包   PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保 ...

  9. Unity该插件NGUI学习(1)—— 环境结构

    Unity官方网站http://unity3d.com/unity/download下载最新版本4.5.4 发现在神圣的论坛裂纹(Windows)版本号http://game.ceeger.com/f ...

  10. jquery.validate1.13

    jquery.validate新的写法(jquery.validate1.13.js) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...