【PLSQL】过程procedure形参和参数
************************************************************************ ****原文: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形参和参数的更多相关文章
- Oracle过程及函数的参数模式,In、out、in out模式
Oracle过程及函数的参数模式 In.out.in out模式 在Oracle中过程与函数都可以有参数,参数的类型可以指定为in.out.in out三种模式. 三种参数的具体说明,如下图所示: ( ...
- PLSQL中的三种参数模式IN、OUT、IN OUT
原文链接:https://www.cnblogs.com/zbj815/p/6854108.html 1.IN模式 IN模式是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改 ...
- SQL记录-PLSQL过程
PL/SQL过程 子程序是一个程序单元/模块执行特定的任务.这些子程序被组合以形成更大的程序.这基本上是被称为“模块化设计”.子程序可以调用由另一个子程序或程序被称为调用程序. 子程序可以创建: ...
- PLSQL过程创建和调用
存储过程 创建过程范例 create or replace procedure pro_kingsql_p1( p_one in varchar2,--可以传入参数 p_two out varchar ...
- Oracle过程及函数的参数模式详解
一.In.out.in out模式 在Oracle中过程与函数都可以有参数,参数的类型可以指定为in.out.in out三种模式. 三种参数的具体说明,如下图所示: (1)in模式 in模式是引用传 ...
- 【297】IDL 过程、函数&关键字参数
目录: 一.Procedure 1.1 基本说明&定义 1.2 关键字参数 二.Function 2.1 基本说明&定义 2.2 关键字参数 参考:IDL中函数中的带有关键字的参数的使 ...
- Oracle plsql存储过程中out模式参数的用法
在plsql中,存储过程中的out模式的参数可以用来返回数据,相当于函数的返回值.下面是一个小例子. 沿用上一篇的emp表结构和数据. 存储过程如下: create or replace proced ...
- Oracle利用过程procedure块实现银行转账
-- create table account( id ) not null, name ), ,2), constraint a_pk primary key(id) ); --历史表 select ...
- sql储存过程in(多个参数)
一.用sql函数 首先要创建一个截取字符串的函数,新建一个查询,把下面代码复制进去执行. 函数SqlitIn的第一个参数是储存过程要in的字符串,第二个参数是分隔符 CREATE function S ...
随机推荐
- 高通公司 MSM8K GPT异常原因分析无法开机的问题
问题分析过程如下面: 一. MSM8916台gpt概率问题:采用QPST emmc software download下载软件工具后,无法开机.例如下面的附图: log分析是userdata分区未成功 ...
- js关于propotype的一些事-------Day62
近期在忙着搬家,忙忙活活的收拾这收拾那,原以为自己东西了了,谁知道东西是越收拾越多,各种崩溃啊..... 昨日在记录js动态生成表格的经典方式时,用到了createDocumentFragment() ...
- CURL重试发送请求
$url1 = 'http://mk.2000tuan.com/coupon4/apiv2/getMcoupon.php; function curlGet($url) { $handle = cur ...
- 单节点伪分布式Hadoop配置
本文所用软件版本: VMware-workstation-full-11.1.0 jdk-6u45-linux-i586.bin ubuntukylin-14.04-desktop-i386.iso ...
- wordpress常见的问题
nginx如webserver,wordpress上传主题错误 413 Request Entity Too Large 解决: vim /usr/local/nginx/conf/nginx.con ...
- 安卓开发笔记——探索EventBus(转)
1.关于EventBus: 组件通讯在Android开发中是不可避免的,随着业务需求的复杂化,代码中需要我们去处理的业务逻辑难度也不断增大.例如多个Fragment之间的数据传递,Service与Ac ...
- 使用python做你自己的自动化测试--对Java代码做单元测试 (2)-导入第三方jar包裹
使用Jython对Java做单元测试,当然,为了测试开发java代码.这涉及到引入第三包的问题,如何导入第三方的包? 您可以使用http://blog.csdn.net/powerccna/artic ...
- ubunut 查看port被哪个程序占用
查看8087port被哪个程序占用 lsof -i :8087 -n
- Unity + iBatis + Asp.net Mvc 系统搭建
Unity + iBatis + Asp.net Mvc 系统搭建 之前用EntityFramework Code First做了一些小项目,很是方便:后来在一个 Java 项目中接触了myBatis ...
- python_random随机
在数据清洗,评估 ,抽验等等过程中,经常有这样的应用场景 : 需要在一个大的数据集合中随机出来样本,进行人工评估.为了保证足够随机,借助脚本来实现. 下面一个脚本 ,用于应对这种应用场景. 使用方法 ...