【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 ...
随机推荐
- 《CS:APP》 chapter 8 Exceptional Control Flow 注意事项
Exceptional Control Flow The program counter assumes a sequence of values ...
- 快速入门:十分钟学会Python(转)
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- java两个音频进入巩固期 玩的同时类似的伴奏
/** * * @param partsPaths 阵列要合成音频路径 * @param unitedFilePath 输入合并结果数组 */ public void uniteWavFile(Str ...
- NSString 筛选和最后一个空白、空行,多换行成一个新行
- (NSString *)filterBlankAndBlankLines:(NSString *)str { NSMutableString *Mstr = [NSMutableString st ...
- BZOJ 1801 AHOI2009 中国象棋 递归
标题效果:给定一个棋盘.放置一些枪.它需要随机两支枪不能互相攻击,评估的数目p模值 首先,两炮不攻击对方自由地等同于一条线最多可有只有两个枪 直形压力DP话是50分 考虑到每个列是等效 然后我们就可以 ...
- three.js 来源目光(十三)Math/Ray.js
商域无疆 (http://blog.csdn.net/omni360/) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:商域无疆 - 本博客专注于 敏捷开发 ...
- 关于通过id查询记录的一些总结
最近在做一个oa系统,简化了账号的设置,列名均为id,类型均为varchar:有的表将id设置成了主键,有的表没有设置成主键. 通过举例说明通过id查询的一些问题. 之前登陆的时候,账号001-007 ...
- python_基础学习_04_mysql库验证与安装(mysql-python,mysql.connector)
验证python-mysql是否安装 1:python 2: import MySQLdb 安装步骤: 1.sudo apt-get install python-setuptools 2.sudo ...
- Arcgis For Android之GPS定位实现
翻开曾经做的东西,看了看,非常多从逻辑上比較乱,对之做了改动,完毕后实现的效果为: MapActivity源码例如以下: package com.lzugis.map; import java.io. ...
- 【IOS】 遍历info 所有内容 && 唯一的节能设备UUID
/**获取装置imie*/ std::string DeviceInfo::getIMIE() { #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) NSStri ...