Oracle——创建存储过程
有个超级详细的关于存储过程的帖子:https://www.cnblogs.com/snowballed/p/6766867.html
Oracle-存储过程(procedure、function、package、tigger)
1、过程procedure
(1)创建过程
create [ or replace ] procedure 过程名称 [ ( 参数列表) ] { is | as }
----声明变量
begin
----执行代码
end [过程名称];
例如:
create or replace procedure myproc
as
m number;
begin
m:=100;
dbms_output.put_line(m);
end;
(2)调用过程
exec 存储过程名称 [ (参数) ] execute 存储过程名称 [ (参数) ] begin ----存储过程名称 [ (参数) ] end
(3)删除过程
drop procedure 过程名称
(4)获取过程返回值
过程的返回值,out参数都是可以获取的
2、函数function
(1)创建函数
create [ or replace ] function 函数名称 [ (参数列表) ] return 返回值类型
{ is | as }
----声明变量
begin
----执行代码
end [函数名称];
(2)调用函数
declare ----创建变量存储函数调用返回值 begin ----调用函数赋值给变量 end;
(3)删除函数
drop function 函数名称
(4)获取函数返回值
函数的返回值,out参数都是可以获取的
注意:过程和函数的区别
①函数至少返回一个变量,而过程可以返回多个,也可以不返回。
函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。
②函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.
而过程的限制相对就比较少。
③对于过程来说可以返回参数,而函数只能返回值或者表对象。
④存储过程一般是作为一个独立的部分来执行(EXEC执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),
由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
3、包和包体
(1)创建包
create [ or replace ] package 包名称 is | as ----定义公用常量、变量、过程、函数等(不能有具体实现) end [ 包名称 ];
(2)创建包体
create [ or replace ] package body 包名称 is | as ----定义公用常量、变量、过程、函数等 ----实现公用过程和函数 end [ 包名称 ];
(3)调用包
declare ----定义变量 begin ----包名.元素名称(参数) end
(4)删除包和包体
drop package [ body ] [ user. ] 包名
4、触发器tigger
(1)创建触发器
create [or replace] tigger 触发器名 { before | after } { insert | update | delete }
on 表名 ---- 数据库触发器所在的表。
[for each row] ---- 对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。
begin
----pl/sql语句
end
(2)删除触发器
drop tigger 触发器名称
(3)禁用所有触发器
ALTER SYSTEM SET "_system_trig_enabled"=false;
转自:https://yq.aliyun.com/articles/675844
Oracle——创建存储过程的更多相关文章
- Oracle创建存储过程、执行存储过程基本语法
>>>>>>>>>>>>>>>>>>>>>>>>> ...
- PL SQL 存储过程 SQL SERVER创建存储过程及调用,Oracle创建存储过程及调用
Oracle使用存储过程实例: 例1: //查出表字段赋值给存储过程变量 create proc proc_stu @sname varchar(20), //默认是输入参数(input),另外还有两 ...
- oracle创建存储过程
创建: create or replace procedure insert_tbuser ( username nvarchar2,usersex nvarchar2,userage numbe ...
- oracle创建存储过程并返回结果集(附C#调用代码)
使用存储过程中,最常用的莫过于查询数据表,并返回结果集. 在SQL SERVER 中,这类操作最简单,通过简单的select * from xx 即可完成.但是在Oracle中并不支持这种写法,那么我 ...
- oracle创建存储过程中遇到的问题
create or replace PROCEDURE CLEAR AS tname varchar(200);BEGIN tname:='''immediate trace name flush_c ...
- Oracle:创建存储过程
1.无参存储过程 create or replace procedure test_procasv_total number(10);begin select count(*) into v_tot ...
- Oracle 创建存储过程 提示权限不足或者提示表和视图不存在问题
grant create view to hospital; --授予查询权限 grant select any table to hospital; --授予权限 grant select any ...
- firedac调用ORACLE的存储过程
firedac调用ORACLE的存储过程 EMB官方原文地址:http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_Oracle_with_F ...
- 【转】SQL2008 链接Oracle 调用存储过程
1. SQL链接ORACLE 都是可视化的操作 如下图: 红色框选的是oracle的数据驱动,如果没有这个驱动 那需要单独安装oracle的client端 装完以后就有了. 2.在创建之前,在SQLS ...
随机推荐
- 修改 oracle 数据库的 sys 账号密码,ERROR at line 1: ORA-01034: ORACLE not available
挺久没有登录的 oracle 数据库,因为公司要求加固密码,登录后修改失败 1.启动数据库的同时启动控制文件.数据文件,提示:cannot mount database in EXCLUSIVE mo ...
- Jmeter分布式 (三)
一.什么是分布式测试 分布式测试是指通过局域网和Internet,把分布于不同地点.独立完成特定功能的测试计算机连接起来,以达到测试资源共享.分散操作.集中管理.协同工作.负载均衡.测试过程监控等目的 ...
- CTF-Tools 一款CTF古典密码加解密工具
CTF-Tools 一款CTF古典密码加解密工具 工具截图 工具简介 一款CTF编码.解码.加密.解密工具. 支持的编码解码: URL-UTF-8 URL-GB2312 Unicode Escape( ...
- 【解决方案】Pyinstaller打包exe策略(简单实用)
场景说明 在业务场景中, 经常需要Python开发一些小程序/脚本/GUI界面,进行简单的项目测试或未安装Python 的小伙伴们使用. 使用Pyinstaller将Python脚本或者项目打包,生成 ...
- geoserver控制服务访问权限-类似百度地图的key
目录 缘起 可行性分析 如何实现key验证访问 如何控制key能访问哪些地图服务? 如何实现服务器ip白名单 流程梳理 申请key 访问地图 实施步骤 拦截器设置 配置key验证规则 配置服务拦截规则 ...
- Linux usb 4. Device 详解
文章目录 1. 简介 2. Platform Layer 2.1 Platform Device 2.2 Platform Driver 3. UDC/Gadget Layer 3.1 Gadget ...
- R语言中文分词包jiebaR
R语言中文分词包jiebaR R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据 ...
- GoLang设计模式14 - 状态模式
状态模式,顾名思义,是一种基于有限状态机制的设计模式.在这种设计模式中,行为是由相应的状态来决定的.接下来我们会用一个售卖机的例子来说明下状态模式.为了便于说明,我们把场景简化一下,假设有一台售卖机只 ...
- [nowcoder5668I]Sorting the Array
令$f(n,b,m)=a[1..n]$(这里下标从1开始),考虑一些性质: 性质1.对于$\forall 1\le i\le n-m+1$,若$\exists 1\le j<i,a[j]> ...
- C#中使用protobuf-net进行序列化
前一篇文章我们看到使用Google.Protobuf有诸多不便(参考<如何在C#中使用Google.Protobuf工具>),这次我们来看看另一个工具的使用体验. 相关资料.链接: git ...