【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 ...
随机推荐
- Log4NET 数据库
阅读目录 Log4NET简介 前提 详细步骤 回到顶部 Log4NET简介 log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种 ...
- 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历
原文:使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 常常遇到需要向SQL Server插入批量数据,然后在存储过程中对这些数据进行进一步处理的情况.存储过 ...
- Eclipse Maven构建Spring MVC项目
工作中项目开发使用Maven管理项目的构建.打包.编译,框架採用的是Spring MVC框架,而且实现了多模块.多项目的管理.自己也简单的參与了架构的设计.对于刚開始学习的人来说,使用Maven构建项 ...
- Oracle经常使用函数
Oracle经常使用函数 --TRUNC,TO_DATE,TO_CHAR,TO_NUMBER, SUBSTR,REPLACE.NVL .TRIM,wm_concat,upper, lower,leng ...
- Down to the TLP: How PCI express devices talk (Part I)
http://xillybus.com/tutorials/pci-express-tlp-pcie-primer-tutorial-guide-1 Down to the TLP: How PCI ...
- spring框架内置笔记本
◆基本介绍 目的:解决企业应用开发的复杂性 特征:使用主JavaBean更换EJB,它提供了许多其他的企业应用 范围:随你Java应用 Spring 框架是一个分层架构.由 7 个定义良好的模块组成. ...
- 关于ACM,关于CSU
原文地址:http://tieba.baidu.com/p/2432943599 前言: 即将进入研二,ACM的事情也渐渐远去,记忆终将模糊,但那段奋斗永远让人热血沸腾.开个贴讲讲ACM与中南的故事, ...
- Windows在配置Python+tornado
1,安装Python 2.7.x版本号 地址:https://www.python.org/downloads/release/python-278/ 2,安装python setuptools工具 ...
- oracle创建user具体指示
一个.用户的概念 用户,这是user,通俗的讲就是参观oracle数据库"人".在oracle在.的各种安全参数的用户可控制,为了保持数据库的安全性,的概念包括模型(schema) ...
- ShellExecuteEx的使用方法
关于怎样在c++中启动外部的exe程序,之前看到在百度一搜就看到了: ShellExecute(this->m_hWnd,"open","calc.exe" ...