oracle存储过程基础知识-程序员宅基地

技术标签: C#  C++  C  数据库  Oracle  SQL  

商业规则和业务逻辑可以通过程序存储在oracle中,这个程序就是存储过程。

存储过程是SQL, PL/SQL, JAVA 语句的组合, 它使你能将执行商业规则的代码从从你的应用程序中移动到数据库。这样的结果就是,代码存储一次但是能够被多个程序使用

要创建一个 过程对象(procedural object),必须有 CREATE PROCEDURE 系统权限。如果这个过程对象需要被其他的用户schema 使用,那么你必须有 CREATE ANY PROCEDURE 权限。

执行 procedure 的时候,可能需要excute权限。或者EXCUTE ANY PROCEDURE 权限。

如果单独赋予权限,如下例所示:  grant  execute on MY_PROCEDURE  to Jelly

调用一个存储过程的例子: execute MY_PROCEDURE( 'ONE PARAMETER');

PROCEDURE 和 FUNCTION 的区别。 function有返回值,并且可以直接在Query中引用function和或者使用function的返回值。

 PACKAGE 是function,procedure,variables 和sql 语句的组合。package允许多个procedure使用同一个变量和游标。

创建 procedure的语法:

CREATE [ OR REPLACE ] PROCEDURE [ schema.]procedure
  [(argument [IN | OUT | IN OUT ] [NO COPY] datatype
    [, argument [IN | OUT | IN OUT ] [NO COPY] datatype]...
  )]
[ authid { current_user | definer }]
{ is | as } { pl/sql_subprogram_body |
language { java name 'String' | c [ name, name] library lib_name
}]

sql 代码
  1. CREATE PROCEDURE sam.credit (acc_no IN NUMBER, amount IN NUMBER) AS    
  2.    BEGIN  
  3.       UPDATE accounts    
  4.       SET balance = balance + amount    
  5.       WHERE account_id = acc_no;    
  6.    END;  

 

可以使用 create or replace procedure 语句, 这个语句的用处在于,你之前赋予的excute权限都将被保留。

IN, OUT, IN OUT 用来修饰参数。IN 表示这个变量必须被调用者赋值然后传入到PROCEDURE进行处理。OUT 表示PRCEDURE 通过这个变量将值传回给调用者。IN OUT 则是这两种的组合。

authid代表两种权限: 定义者权限(difiner right 默认),执行者权限(invoker right)。定义者权限说明这个procedure中涉及的表,视图等对象所需要的权限只要定义者拥有权限的话就可以访问。执行者权限则需要调用这个procedure的用户拥有相关表和对象的权限。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/iteye_9178/article/details/81438204

智能推荐

试用WPS(不是金山WPS,是World Programming System)-程序员宅基地

文章浏览阅读231次。虽然自己开发了个山寨版的web-based SAS IDE,仍旧比SAS Editor好不了哪里去:只用语法高亮(CodePress已实现)而没有代码辅助功能。本来打算把MDK Editor(一个javascript写的在线代码编辑器,语法高亮和代码辅助功能兼而有之)hack一下,整合进SIDE的。自从上个礼拜发现WPS后,这个念头打消了。 WPS采用了强大的Eclipse开发平台,是我见到的..._world pragramming

Android P中的AVB校验(二)_avbtool-程序员宅基地

文章浏览阅读2k次。Android O/P 版本以来,谷歌加入了A/B system的特性,此时ramdisk和system是一起放在同一个system.img镜像中的。而系统起来之后也就不存在system分区了,而是直接把system镜像挂载到/根目录上。那么这个操作是怎么进行的呢?system.img默认是需要使能dm-verity来挂载的,那么这就涉及到如何使能dm-verity来挂载/根分区。还有一个重要的点,如果我们想要禁用dm-verity功能又要如何操作?这又涉及更深的层次,如果。_avbtool

目标跟踪学习笔记_4(particle filter初探3)_a boosted particle filter: multitarget detection a-程序员宅基地

文章浏览阅读3.6k次。目标跟踪学习笔记_4(particle filter初探3) ( 注:本文为这学期一个作业,关于粒子滤波的介绍在前面2篇博客中已提到过,即:目标跟踪学习笔记_2(particle filter初探1)目标跟踪学习笔记_3(particle filter初探2)前面2篇博客已经提到当粒子数增加时会内存报错,后面又仔细查了下程序,是代码方面的问题。所以本次的代码与前几次改变比较_a boosted particle filter: multitarget detection and tracking论文阅读

[通信原理]擾碼(Scramble)與解擾(Descramble)_scramble原理-程序员宅基地

文章浏览阅读1w次,点赞4次,收藏19次。前言:在数字信号的传输中,发送机往往要加扰码器,相对应的接收端要加解扰器。扰乱器起的作用是:如果输入数字序列是短周期的,将把它按照某种规律变换(扰乱)为长周期,并且使输出序列(以后将称为信道序列)中的过判决点(在二进制中即过零点)接近码总数的一半。解扰器在接收端将被扰乱后的序列还原为输入发送机的数字序列(消息)。最简单的扰码方法是在输入数字序列上加一个最长线性移位寄存器序列,使前者变..._scramble原理

数论--筛法变形--ACM-ICPC 2018 南京赛区网络预赛 J.Sum_acm-icpc 2018 南京赛区网络预赛 sum-程序员宅基地

文章浏览阅读184次。https://nanti.jisuanke.com/t/30999f[i]表示将i分解为2个数相乘的方案数,i = a*b,且a,b均不能有平方因子。求f[i]前缀和n = p1^a1 * p2^a2 * p3^a3 * ... * pk^ak= a * b若a1 = 1,则a可能有p1,可能没有,f[n] = f[n / p1] * 2a1 = 2,则a必须选p1(a,..._acm-icpc 2018 南京赛区网络预赛 sum

XML,HTML中输出<>等特殊符号_xml中<>怎么写-程序员宅基地

文章浏览阅读1.1k次。在values - strings里命名字符串时,有时需要输出若不加任何操作则会报错,如 ... element is not closed。需进行转义输出,将    > 换为 >  >= 换为 ≥即可正常输出。原文链接:http://www.cnblogs.com/xudong-bupt/p/3909416.html_xml中<>怎么写

随便推点

4.WML编程-程序员宅基地

文章浏览阅读621次。[转_摘编]WML的元素通常有一个首标签、内容、其它元素及一个尾标签组成。也就说,单独的标签是一个元素,成对出现的标签与其包含的内容也构成一个元素。由于元素牵涉及标签,标签又涉及属性。1 卡片、卡片组及其属性1.1 共有属性WML元素的共有属性主要有3个:id、class和xml:lang属性。WML的所有元素都有两个核心属性,即标示(id)和类(class)属性。它们主要用于

[精品毕设]基于Python的疫苗查询预约服务系统接种-程序员宅基地

文章浏览阅读24次。该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功!

那些在线的Jupyter_jupyterhub在线-程序员宅基地

文章浏览阅读534次。Jupyter如果你是python的初学者, 非常推荐Jupyter.Juypter是一个交互式的编程环境, 号称The Notebook has support for over 40 programming languages,including Python, R, Julia, and Scala.支持超过40种语言, 其中包括Python, R, Julia和Scala. 虽然..._jupyterhub在线

QT 的Moc Uic Rcc有什么用(360ui移植到eclipse)_322rcc-程序员宅基地

文章浏览阅读1.6k次。Moc 主要是用于 将类中包含Q_OBJECT 的类里面的 信号 和槽 处理 成moc_xxx文件。因为QT 信号与 slot 这一部分不是纯C++的 所以要通过 moc来将 Q_OBJECT的部分包含的信息编译进去。当不使用信号这些的时候 去掉Q_OBJECT 也可以编译通过。只是无法处理信号这些。Rcc 主要是将 rc资源文件 转成字节流形式 的CPP文件_322rcc

TPCTF maze——WP_create string tab and init strings-程序员宅基地

文章浏览阅读418次,点赞9次,收藏6次。先解包反编译chal.pyc核心逻辑在maze.so,chal.pyc导入了maze里面的run函数执行,maze是用Cython编译的用strings查看可以看出是cython3.0.5版本编译的。_create string tab and init strings

查找android对应的navtive so函数地址_获取 native 方法对应so-程序员宅基地

文章浏览阅读2.6k次。第一是从so文件里面查找。导出表以及符号。另外一种就是 一般会在JNI_OnLoad里面注册 native函数。native函数定义如下。typedef struct { const char* name; const char* signature; void* fnPtr;} JNINativeMethod;jint RegisterNatives(jc..._获取 native 方法对应so

推荐文章

热门文章

相关标签