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

基础篇       知识回顾

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

过程的分类:

(一)有过程参数

  (二)没有过程参数的
             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

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

  1. mysql之存储过程基础篇

    1.  创建/使用数据库 mysql> create database me; mysql> use me; 2.  创建表 mysql> create table Stu(Sno ...

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

      PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语 ...

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

    PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语言是 ...

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

    前言 上几篇文章我们介绍了如何查看查询计划.常用运算符的介绍.并行运算的方式,有兴趣的可以点击查看. 本篇将分析在SQL Server中,如何利用先有索引项进行查询性能优化,通过了解这些索引项的应用方 ...

  5. 讲讲Linq to SQL映射(基础篇)

    讲讲Linq to SQL映射(基础篇) 这篇主要讲Linq to  SQL基于属性的映射.即映射数据库,映射表,映射列,映射关系,映射存储过程, 映射函数.然而创建这种映射有三种方法,他们分别是OR ...

  6. sql基础篇

    再跟SQL谈一谈--基础篇   1.简介 2.DDL & DML 3.SELECT ①DISTINCT ②WHERE ③AND & OR ④ORDER BY 4.INSERT 5.UP ...

  7. Java面试题之基础篇概览

    Java面试题之基础篇概览 1.一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,且public的类名必须与文件名相一致. 2.Ja ...

  8. oracel存储过程编写 以及plsql存储过程的debug

    1.语法: create or replace procedure messagebackup_createTable       //此处存储过程名称不能超过30个字符 as  tableName ...

  9. PLSQL优化基础和性能优化 (学习总结)

    PLSQL优化基础和性能优化 (学习总结) 网上有一篇关于PLSQL优化的文章,不错,个人根据自己的经验再稍加整理和归纳,总结PLSQL优化和性能调优 适合有一定PLSQL基础,需要进一步提高的学友看 ...

随机推荐

  1. C1驾考总结

    C1学车经验总结       科目1:理论考试,要点:驾考宝典上有关科目一的题全部做一遍,然后使用模拟测试,连续能够三次测试通过95分以上,说明差不多了.其中要特别注意,多去回顾几次做错过的题目.   ...

  2. 工具使用-----Jmeter教程 简单的压力测试

    摘抄于http://www.cnblogs.com/TankXiao/p/4059378.html 以下是英文版的,中文版的也差不多的 Jmeter是一个非常好用的压力测试工具.  Jmeter用来做 ...

  3. Xshell配置ssh免密码登录-密钥公钥(Public key)与私钥(Private Key)登录【已成功实例】

    本文转自https://blog.csdn.net/qjc_501165091/article/details/51278696 ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口 ...

  4. JSON序列——主从表查询

    JSON序列——主从表查询 客户端代码: procedure TForm1.Button4Click(Sender: TObject); // 主从表 查询 begin var url: TynUrl ...

  5. Unity Shader-后处理:高斯模糊

    一.简介   上一篇文章学习了模糊的原理以及基本的模糊实现,对于清晰和模糊这个定义感觉还是比较说明问题,这里再贴出一下:“清晰的图片,各个像素之间会有明显的过渡,而如果各个像素之间的差距不是很大,那么 ...

  6. 17、python对内存的使用

    python对内存的使用 浅拷贝和深拷贝 所谓浅拷贝就是对引用的拷贝(只拷贝父对象) 所谓深拷贝就是对对象的资源的拷贝 解释一个例子: import copy a = [1,2,3,['a','b', ...

  7. Neo4j(一)

    01-windows下载与安装neo4j https://blog.csdn.net/qq_21383435/article/details/78807024 neo4j的配置文件(图文详解) htt ...

  8. 大数模板 poj3982

    1. 这个模板不是自己写的,转载的别人转载的,还没学完c++的我,想写也没有那能力. 这个模板我用在了POJ的一道题上,传送门--POJ3982 一般大数的题,都可用这个模板解决,仅仅须要改动主函数就 ...

  9. 手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis

    在写代码之前我们先了解一下这三个框架分别是干什么的? 相信大以前也看过不少这些概念,我这就用大白话来讲,如果之前有了解过可以跳过这一大段,直接看代码! SpringMVC:它用于web层,相当于con ...

  10. PL/SQL出现存储过程注释中文乱码

    进入PL/SQL命令行窗口输入:select userenv('language') from dual 查出数据库字符集 输入:select * from V$NLS_PARAMETERS 查出NL ...