【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 ...
随机推荐
- 【SSH2(理论+实践)】--Hibernate步步(一个)
前几个博客讨论SSH2该框架Struts,它代表层,集成封装.和使用WebWork作为核心处理,依赖映射是它的处理核心.在使用时需要Struts.xml配置相应Action和Interceptor够完 ...
- NSIS:检查某注册表键是否存在
原文NSIS:检查某注册表键是否存在 ;定义注册表主键!define HKEY_CLASSES_ROOT 0x80000000!define HKEY_CURRENT_USER ...
- Learning JavaScript(0)_Concepts
作用域,嵌套函数和闭包 <script type="text/javascript"> function foo(){ var a = 10; function bar ...
- 微博API怎么爬取其它未授权用户的微博/怎么爬取指定用户公布的微博
获取某个用户最新发表的微博列表:http://open.weibo.com/wiki/2/statuses/user_timeline 原接口已经被封.很多人都在问怎么获取指定用户的微博,于是写这篇B ...
- Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization
跑 service network restart NIC出现无法启动,他说,没有发现 Bringing up interface eth0: Device eth0 does not seem t ...
- 关于JavaScript中计算精度丢失的问题
摘要: 由于计算机是用二进制来存储和处理数字,不能精确表示浮点数,而JavaScript中没有相应的封装类来处理浮点数运算,直接计算会导致运算精度丢失. 为了避免产生精度差异,把需要计算的数字升级(乘 ...
- HDU 3523 Image copy detection(KM最大匹配)
HDU 3523 Image copy detection 题目链接 题意:这题事实上题意读懂就简单了,说白了就是1-n放到1-n列,每列的值为每列上数字和该数字的差的绝对值,然后求总和最小 思路:就 ...
- yii 使用 mongodb 小工具 YiiMongoDbSuite
YiiMongoDbSuite下载链接: http://www.yiiframework.com/extension/yiimongodbsuite/ 如果你的yii和mongodb它已经建立了一个良 ...
- CocoaPods 建立私有仓库
CocoaPods是iOS,Mac下优秀的第三方包管理工具,类似于java的maven,给我们项目管理带来了极大的方便. [个人或公司在开发过程中,会积累很多可以复用的代码包,有些我们不想开源,又想像 ...
- 【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照
近期在开发小组在研究:BS项目中是利用'MVC框架'还是继续沿用'三层'的问题. 由于曾经的.NET项目大多数都是利用三层开发的,所以大多数人都可以对三层进行熟练地运用.而项目的開始我们也曾听说过MV ...