




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
存储过程一、概述存储过程(Stored Procedure)应用在大型数据库系统中,是SQL语句和流程控制语句的集合,经编译后存储在数据库系统中,用户通过指定存储过程的名字并给出参数(如果带有参数的话)来执行,类似高级语言中的函数。在创建时编译一次,以后执行时运行很快。存储过程的种类:1系统存储过程,以sp_开头,用来进行系统的各项设定,取得信息及相关管理工作, 如 sp_help就是取得指定对象的相关信息。2本地存储过程,由用户创建的存储过程,一般所说的存储过程就是指本地存储过程。3扩展存储过程,以XP_开头,用户可以使用外部程序语言编写的存储过程,用来调用操作系统提供的功能。存储过程的优点:1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。3.存储过程可以重复使用,可减少数据库开发人员的工作量。4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。存储过程的缺点:1. 调试麻烦。2. 移植问题,与具体数据库相关,需要考虑移植问题。在梅安森项目中需要考虑从SQL Server到PostgreSQL移植工作。3. 如果在应用程序中大量使用存储过程时,到程序交付给客户的时候,需要考虑系统的相关问题,维护代价大。二、存储过程的常用格式:-创建存储过程,create proc or procedure sp_name参数名类型,参数名类型outputwithrecompile|encryptionasbeginsql_statementend-调用存储过程exec sp_name参数名-删除存储过程drop procedure sp_name解释: output:表示此参数是可传回的with recompile|encryptionrecompile:表示每次执行此存储过程时都重新编译一次encryption:所创建的存储过程的内容会被加密三、各种常见数据库对存储过程的支持大多数常用数据都支持存储过程,但是各类数据库都有自己的过程语言或者语法格式,也就是访问不同类型的数据库,需要考虑移植问题。下面简单描述了各种常见数据库中使用存储过程的语法格式。MySQL:1.创建存储过程,CREATE PROCEDURE simpleproc (OUT param1 INT),参数类型(in、out、inout)2.调用存储过程,CALL simpleprocSQL Server: SQL Server数据库提供的过程语言是Transact-SQL,简称T-SQL。1.创建语法create proc | procedure pro_name 参数数据类型 =默认值 output, 参数数据类型 =默认值 output, . WITH RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION as SQL_statements2.调用、执行, exec pro_nameOracle: Oracle数据库提供工程语言PL/SQL来构建存储过程。1.创建存储过程语法:CREATE OR REPLACE PROCEDURE procedure_name(arg1 IN | OUT | IN OUT type1 DEFAULT value1, arg2 IN | OUT | IN OUT type2 DEFAULT value1, . argn IN | OUT | IN OUT typen DEFAULT valuen) AUTHID DEFINER | CURRENT_USER IS | AS BEGIN EXCEPTION END procedure_name;2.调用存储过程, EXECUTE | EXEC procedure_name(param1,param2);PostgreSQL: PostgreSQL数据库提供多种过程语言,PL/pgSQL, PL/Tcl, PL/Perl, PL/Python,下面是PL/gpSQL过程语言的一个示例。-创建表create table test(id int,name text);-创建存储过程create function ins_data_test1(int,text) returns bool asdeclare id alias for $1; name alias for $2;begin insert into test values(id,name); return true;end;language plpgsql-执行存储过程select ins_data_test1(1,shengch);四、PostgreSQL的存储过程及示例4.1介绍在Oracle数据库中,存储过程和函数统称为PL/SQL子程序,他们的唯一区别是函数总向调用者返回数据,而过程则不返回数据,过程的参数可以有三种模式(IN、OUT、IN OUT),而函数只有一种(IN)。而在PostgreSQL数据库中不区分函数和存储过程,或者说它把存储过程当做函数来处理,因此在用PL/gpSQL创建的存储过程中,必须返回数据,类型可以为VOID。4.2 示例需求: 给出如下条件进行批处理编排 - 开始日期时间 - 重复间隔(分钟) - 重复次数 要求在档期内重复安排节目播出, 比如: 2003.01.01 08:00 开始每隔240分钟 播出一次, 一共播出100次, 或者用户自行设定的其他时间。 数据库表格(CO_SCHEDULE) - N_PROGID INT DT_STARTTIME TIMESTAMPDT_ENDTIME TIMESTAMP-创建表create table co_schedule(n_progid int,dt_starttime timestamp,dt_endtime timestamp);-创建函数(存储过程)create function add_program_time(int4,timestamp,int4,int4,int4) returns bool as declare prog_id alias for $1; duration_min alias for $3; period_min alias for $4; repeat_times alias for $5; i int; starttime timestamp; ins_starttime timestamp; ins_endtime timestamp;begin starttime :=$2; i := 0; while irepeat_times loop ins_starttime := starttime; ins_endtime := timestamp_pl_interval(ins_starttime, CAST(duration_min | mins AS interval); starttime := timestamp_pl_interval(ins_starttime, CAST(period_min | mins AS interval); insert into co_schedule values(prog_id,ins_starttime,ins_endtime); i := i+1; end loop; if irepeat_times then return false; else return true; end if;end;language plpgsql;-执行存储过程select add_program_time(1,2002-10-20 0:0:0,5,120,5);五、PL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产妇护理培训
- 脱硝工艺培训课件
- 成人呼吸支持治疗器械相关压力性损伤的预防(中华护理学会团体标准解读)
- 装修工序培训课件模板
- 检验仪器考试题及答案
- 节后检修安全培训
- 装修设计培训总结
- 中班教师期末总结
- 基坑支护考试题及答案
- 新闻拍摄技巧方法
- 解冻记录表(标准模版)
- 站用电400V系统定期切换试验方案
- 初中数学北师大八年级下册(2023年修订) 因式分解岷阳王冬雪提公因式法教学设计
- 金属非金属矿山安全规程
- 生活饮用水游离余氯方法验证报告
- DB32∕T 186-2015 建筑消防设施检测技术规程
- C-TPAT反恐知识培训ppt课件
- 巡检培训课件.ppt
- 二代征信系统数据采集规范释义
- 轴承基础知识PPT通用课件
- 苏教版二年级(下册)科学全册单元测试卷含期中期末(有答案)
评论
0/150
提交评论