************************************************************************
  ****原文: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. 【Espruino】NO.06 关键是你的仆人(继续)

    http://blog.csdn.net/qwert1213131/article/details/27834551 本文属于个人理解,能力有限,纰漏在所难免.还望指正. [小鱼有点电] 这几天一直在 ...

  2. WP8加入自己定义铃声

    1.下载千千静听绿色版,下载地址:http://pan.baidu.com/s/1ntuSNOH 2.将目标铃声加入到千千静听,选中铃声,右键选文件属性. 3.改动文件属性,将流派改为"Ri ...

  3. java 面试题汇总(未完成)

    版权声明:本文博客原创文章,博客,未经同意,不得转载.

  4. Log4j 2.0在具体解释发展先进的使用—SocketAppender远程输出(五岁以下儿童)

    Log4j2的Appenders充分考虑输出日志事件.包装和过滤可以被转发,它包含的主要输出到本地文件.输出到远程主机, 文件包.注射.而且,根据该日志文件的时间点.自己主动文件大小的储存条件. 例如 ...

  5. 第三十讲:Android之Animation(五)

    天行健,君子以自强不息.--<周易·乾·象> 本讲内容:逐帧动画 Frame Animation 逐帧动画 Frame Animation就是说一帧一帧的连起来播放就变成了动画,和放电影的 ...

  6. [Cocos2d-x]Cocos2d-x 3.2 学习笔记

    获取屏幕大小(Visible) Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Direc ...

  7. C++在stack的deque实现

     本文实现STL在stack大部分功能,同时加入了许多功能. 请注意以下几点: 1.Stack它是一个适配器,在底部vector.list.deque等实现 2.Stack不含有迭代器 在本例中, ...

  8. PYTHON单元测试

    PYTHON开发入门与实战11-单元测试 1. 单元测试 本章节我们来讲讲django工程中如何实现单元测试,单元测试如何编写以及在可持续项目中单元测试的重要性. 下面是单元测试的定义: 单元测试是开 ...

  9. Sharepoint 2013 左右&quot;SPChange&quot;一个简短的引论

    于SharePoint于,我们经常需要获得这些更改项目,竟api为我们提供SPChange物.下列,在通过我们的目录资料这一目标. 1.创建测试列表,名字叫做"SPChangeItems&q ...

  10. ubuntu文本界面乱码的中国解决方案

    问题: 文本界面乱码中国 解决方式: 非常easy.安装fbterm就OK! 详细例如以下: 安装命令:sudo apt-get install fbterm xfonts-xqy 然后执行:sudo ...