PLSQL存储过程(基础篇)-转

我不是专门的开发人员,但存储过程又是很重要的知识,为了能够很好的记忆,现把这些基础知识总结一下。存储过程可以实现代码的充分共享,提高系统性能。

基础篇       知识回顾

如果经常使用特定操作,哪么可以考虑基于这些操作使用过程,简化开发和维护,可以充分实现代码共享,提高系统性能。

过程的分类:

(一)有过程参数

(二)没有过程参数的

1.输入参数(默认是输入参数)

2.输出参数

3.输入输出参数

基本语法规则:

Create or replace procedure procedure_name(argument1 [mode1] datatype1 , argument2 [mode2] datatype2 ……)

Is [as]

PL/SQL Block;

注意:当定义参数时,只能指定数据类型,不能指定长度.

范例一:无参数的过程

create or replace procedure a_time

is

begin

dbms_session.set_nls(‘nls_date_format‘,‘‘‘yyyy-mm-dd‘‘‘);

dbms_output.put_line(sysdate);

end;

/

执行过程:(调用无参数过程可以直接引用过程名)

SQL> exec a_time;

2008-03-04

PL/SQL 过程已成功完成

范例二:具有输入参数的过程:

SQL> create or replace procedure b_insert (i emp.id%type,n emp.name%type)

2 is

3 begin

4 insert into emp values(i,n);

5 commit;

6 end;

SQL> 过程已创建。

执行这个过程:

SQL> exec b_insert(‘14‘,‘peter_lin‘);

PL/SQL 过程已成功完成。

SQL> select * from emp;

ID          NAME

---------- ----------

14         peter_lin

1          DICK_t

可以看到,数据自动插入到了表格中。

范例三:带有输出参数的过程:

SQL> create or replace procedure c_update(old varchar2,new emp.id%type,nam out emp.name%type)

2 is

3 begin

4 select name into nam from emp where id=old;

5 update emp set id=new where id=old;

6 commit;

7 end;

SQL> 过程已创建。

执行这个过程:带有输出参数的过程,需要使用变量接收这个输出值。

SQL> declare

2 nn emp.name%type;

3 begin

4 c_update(&old,&new,nn);

5 dbms_output.put_line(‘被修改id的员工姓名:‘||nn);

6 end;

7 /

输入 old 的值: 14

输入 new 的值: 12

原值    4: c_update(&old,&new,nn);

新值    4: c_update(14,12,nn);

被修改id的员工姓名:peter_lin

PL/SQL 过程已成功完成。

SQL> select * from emp;

ID         NAME

---------- ----------

12         peter_lin

1          DICK_t

已选择2行。

范例四:带有输入输出参数的过程

SQL>create or replace procedure in_out

2 (n1 in out number,n2 in out number) is

3 v1 number;

4 v2 number;

5 begin

6 v1:=trunc(n1/n2);

7 v2:=mod(n1,n2);

8 n1:=v1;

9 n2:=v2;

10 end;

SQL> 过程已创建。

执行这个过程:

SQL>declare

2 a1 number:=&n1;

3 a2 number:=&n2;

4 begin

5 in_out(a1,a2);

6 dbms_output.put_line(‘除法的商‘||a1||‘,除法的余数:‘||a2);

7 end;

SQL> 输入 n1 的值: 100

原值    2: a1 number:=&n1;

新值    2: a1 number:=100;

输入 n2 的值: 3

原值    3: a2 number:=&n2;

新值    3: a2 number:=3;

除法的商33,除法的余数:1

时间: 2024-10-25 22:31:48

PLSQL存储过程(基础篇)-转的相关文章

oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器

  PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语言是为了补充SQL语言的,是带有了分支和循环的语言. PL/SQL 语法 基本数据类型声明 declare v_name varchar2(20); v_temp number(1); v_count binary_integer := 0; v_sal number(7,2) := 4000.00

SQL Server调优系列基础篇(索引运算总结)

原文:SQL Server调优系列基础篇(索引运算总结) 前言 上几篇文章我们介绍了如何查看查询计划.常用运算符的介绍.并行运算的方式,有兴趣的可以点击查看. 本篇将分析在SQL Server中,如何利用先有索引项进行查询性能优化,通过了解这些索引项的应用方式可以指导我们如何建立索引.调整我们的查询语句,达到性能优化的目的. 闲言少叙,进入本篇的正题. 技术准备 基于SQL Server2008R2版本,利用微软的一个更简洁的案例库(Northwind)进行解析. 简介 所谓的索引应用就是在我们

VFP的数据策略:基础篇

VFP的数据策略:基础篇 作者:Doug Hennig  翻译:老瓷 概述 在VFP应用程序中,有很多方法可以访问非VFP数据(如SQL Server):远程视图.SQL Passthrough(SPT--译者著).ADO.XML……本文件将探讨不同机制的利弊,并讨论何时适合使用特定策略.我们还将研究VFP中一种令人兴奋的新技术CursorAdapter,它将使访问远程数据比早期版本更容易. 介绍 越来越多的VFP开发人员将数据存储在VFP表以外的其他地方,如SQL Server或Oracle.

Hybrid APP基础篇(四)->JSBridge的原理

说明 JSBridge实现原理 目录 前言 参考来源 前置技术要求 楔子 原理概述 简介 url scheme介绍 实现流程 实现思路 第一步:设计出一个Native与JS交互的全局桥对象 第二步:JS如何调用Native 第三步:Native如何得知api被调用 第四步:分析url-参数和回调的格式 第五步:Native如何调用JS 第六步:H5中api方法的注册以及格式 进一步完善JSBridge方案 思路 实现 注意 完整的JSBridge 完整调用流程图 另外实现:不采用url sche

网络基础篇----计算机网络基本概述(1)

享受生活  热爱挑战                                                                刘明远分享    一   计算机网络基本概述(1) 每章一段话: 不要让自己闲下来,给自己找些事情做.哪怕是看看书. 正文   (提示:本章内容比较无聊,最好当看故事一样来看,不必记下只需了解,内容基础) 1什么是计算机网络 号称新的"电力火花"是以计算机.通信.信息技术为支撑的计算机网络技术. 计算机网络将两台或多台计算机通过电缆或网络设

js调试系列: 源码定位与调试[基础篇]

js调试系列目录: - 如果看了1, 2两篇,你对控制台应该有一个初步了解了,今天我们来个简单的调试.昨天留的三个课后练习,差不多就是今天要讲的内容.我们先来处理第一个问题:1. 查看文章下方 推荐 这个功能所调用的函数源码其实非常简单,点放大镜选中那个推荐即可.这个  votePost(cb_entryId,'Digg')  就是推荐按钮所调用的函数了,是不是非常简单. 第二个问题,定位到函数所在文件位置.其实也是非常简单的,当然,不熟悉控制台的朋友也许不知道怎么看.我在控制台输入 voteP

DOM系列---基础篇

DOM (Document Object Model) 即文档对象模型, 针对 HTML 和 XML 文档的 API (应用程序接口) .DOM 描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某一部分.DOM 产生于 网景公司及微软公司创始的 DHTML(动态 HTML) ,但现在它已经成为表现和操作页面标记的真正跨平台.语言中立的方式. DOM 中的三个字母: D(文档)可以理解为整个 Web 加载的网页文档: O(对象)可以理解为类似 window 对象之类的东西,可以调用属性

深入理解iPhone数据持久化(手把手教你iphone开发 – 基础篇)

在所有的移动开发平台数据持久化都是很重要的部分:在j2me中是rms或保存在应用程序的目录中,在symbian中可以保存在相应的磁盘目录中和数据库中.symbian中因为权限认证的原因,在3rd上大多数只能访问应用程序的private目录或其它系统共享目录.在iphone中,apple博采众长,提供了多种数据持久化的方法,下面笔者会逐个进行详细的讲解. iphone提供的数据持久化的方法,从数据保存的方式上讲可以分为三大部分:属性列表.对象归档.嵌入式数据库(SQLite3).其他方法. 一.属

Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析

转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编译,所以借此篇内容说明一下原由并为之后文章的学习做准备. 即使本片内容只是在围绕一个小小的HelloWorld程序开展,但还是希望朋友们不要急于求成,"欲速则不达". 文章整体思路: 我们循序渐进地来看,一个Qt应用的完成有以下一个重要的步骤: 项目创建->源码编译->程序运行