1、PL/SQL  语法相关

-- SQL 语言只是访问,操作数据库的语言,而比并不是程序设计语言,因此不能用于程序开发。
-- PL/SQL 是在标准SQl语言上进行过程性扩展后形成的程序设计语言,是一种Oracle数据库特有的,支持应用开发语言;
------------if--------------
DECLARE
address VARCHAR2(10) :='Y1';
BEGIN
IF (address ='Y') THEN
dbms_output.put_line('yes');
ELSE
dbms_output.put_line('no');
END IF;
END; -------------case------------
DECLARE
ADDRESS NUMBER := 1;
BEGIN
CASE ADDRESS
WHEN 1 THEN
DBMS_OUTPUT.PUT_LINE('1');
WHEN 2 THEN
DBMS_OUTPUT.PUT_LINE('2');
WHEN 3 THEN
DBMS_OUTPUT.PUT_LINE('3');
ELSE
DBMS_OUTPUT.PUT_LINE('4');
END CASE;
END;
------------LOOP-------------
DECLARE
NUM NUMBER := 5;
BEGIN
LOOP
IF NUM < 0 THEN
EXIT;
END IF;
dbms_output.put_line('H:'||NUM);
NUM := NUM - 1;
END LOOP;
END;
----------
DECLARE
NUM NUMBER := 5;
BEGIN
LOOP
EXIT WHEN NUM < 0;
DBMS_OUTPUT.PUT_LINE('k:' || NUM);
NUM := NUM - 1;
END LOOP;
END;
------FOR...IN..LOOP...END-------
BEGIN
FOR i IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE('L:' || i);
END LOOP;
END;
--------------------------
--%TYPE 定义一个变量,将数据类型与已经定义的数据变量的类型相同,
--或与数据库表的某列的数据类型相同
select * FROM chengji;
DECLARE
NAME1 CHENGJI.NAME%TYPE;
SCORE1 CHENGJI.SCORE%TYPE;
BEGIN
SELECT NAME, SCORE INTO NAME1, SCORE1 FROM CHENGJI WHERE ID = 4;
DBMS_OUTPUT.PUT_LINE(NAME1 || '-' || SCORE1);
END; --提供%ROWTYPE操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致
DECLARE
CJ CHENGJI%ROWTYPE;
BEGIN
SELECT * INTO CJ FROM CHENGJI WHERE ID = 4;
DBMS_OUTPUT.PUT_LINE(CJ.NAME || '-' || CJ.SCORE);
END;

2、游标使用

  1.声明游标

  2.打开游标

  3.提取游标

  4.关闭游标

游标属性
%NOTFOUND -- 是否没找打游标
%FOUND -- 是否找到游标
%ROWCOUNT -- 游标行数
%ISOPEN -- 游标是否打开

-- for 循环游标
DECLARE
CURSOR CJ IS
SELECT * FROM CHENGJI;
-- 定义一个游标变量cj_row ,类型为cj的一行类型
CJ_ROW CJ%ROWTYPE;
BEGIN
FOR CJ_ROW IN CJ LOOP
DBMS_OUTPUT.PUT_LINE(CJ_ROW.NAME || '-' || CJ_ROW.COURSE || '-' ||
CJ_ROW.SCORE);
END LOOP;
END; -- Fetch 游标
DECLARE
CURSOR CJ IS
SELECT NAME, COURSE, SCORE FROM CHENGJI;
CJ_ROW CJ%ROWTYPE; BEGIN
OPEN CJ;
LOOP
FETCH CJ
INTO CJ_ROW;
EXIT WHEN CJ%NOTFOUND;-- 判断是否取到值,没取到值就退出
DBMS_OUTPUT.PUT_LINE(CJ_ROW.NAME || ',' || CJ_ROW.COURSE || ',' ||
CJ_ROW.SCORE);
END LOOP;
CLOSE CJ;
END;

3、过程

3.1

-- 创建过程
CREATE OR REPLACE PROCEDURE 存储过程名(参数in,参数out)
AS
-- 变量声明
NAME VARCHAR2(10);
age INTEGER ;
BEGIN
--业务逻辑
END;

3.2

CREATE OR REPLACE PROCEDURE PRO_CHENGJI_ID(NAME1 IN chengji.name%TYPE, ID1   IN chengji.id%TYPE)
AS
BEGIN
UPDATE CHENGJI SET ID = ID1 WHERE NAME = NAME1;
COMMIT;
END ;
--执行过程
call PRO_CHENGJI_ID('王五',4);

3.3

CREATE OR REPLACE PROCEDURE PRO_CHENGJI_ID(NAME1   IN CHENGJI.NAME%TYPE,
ID1 IN CHENGJI.ID%TYPE,
COURSE1 IN CHENGJI.COURSE%TYPE,
SCORE1 OUT CHENGJI.SCORE%TYPE) AS
BEGIN
SELECT SCORE
INTO SCORE1
FROM CHENGJI
WHERE NAME = NAME1
AND ID = ID1
AND COURSE = COURSE1;
END PRO_CHENGJI_ID;
--执行过程
DECLARE
score chengji.score%TYPE;
BEGIN
PRO_CHENGJI_ID('王五',3,'化学',SCORE);
dbms_output.put_line(''||score);
END;

  

Oracle PL/SQL,游标,过程的更多相关文章

  1. Oracle PL/SQL 游标

    在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个 ...

  2. Oracle PL/SQL游标

    游标的提出: SQL是面向集合的,其结果一般是集合量(多条记录),而PL/SQL的变量一本是标量,其一组变量异常一直只能存放一条记录.所以仅仅使用变量并不能完全满足SQL语句向应用程序输出数据的要求. ...

  3. [oracle]pl/sql --分页过程demo

    这句sql能够用来查询一张表中的特定位置的记录 --查询的方法获取分页的语句 select *from (select t1.*,rownum rn from (select *from books) ...

  4. [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)

    原文:[推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]ORACLE PL/SQL编程之四: 把游标说透(不怕做不到,只怕想不到) 继上两篇:ORACLE PL ...

  5. ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)

    原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!)   继上篇:ORACLE P ...

  6. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

  7. [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)

    原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...

  8. ORACLE PL/SQL编程之八:把触发器说透

    原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...

  9. [推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼、百战不殆)

    原文:[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼.百战不殆) [推荐]ORACLE PL/SQL编程之五: 异常错误处理(知已知彼.百战不殆) 继上三篇:ORACLE PL/S ...

  10. [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)

    原文:[推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆) [推荐]ORACLE PL/SQL编程详解之三: PL/SQL流程控制语句(不给规则,不成方圆) ...

随机推荐

  1. 【python深入】装饰器理解及使用

    装饰器,其实就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下额外增加功能,装饰器的返回是一个函数对象. 用一个例子来说明一下什么是函数对象: 从这里可以看到,直接在函数后面加bar(),就 ...

  2. Codeforces Round #552 (Div. 3) A题

    题目网址:http://codeforces.com/contest/1154/problem/ 题目意思:就是给你四个数,这四个数是a+b,a+c,b+c,a+b+c,次序未知要反求出a,b,c,d ...

  3. Spring注入静态变量的方法,以及CXF如何获取客户端IP

    1.如果使用@Resource注解来注入静态变量的,服务器启动就会报错的.可以新增一个set方法,同时在set方法上用@Resource注解来注入. 2.或者直接在Spring的配置文件中使用< ...

  4. c#NPOI读取excel 比interop和Microsoft.Jet.OLEDB.4.0 之类 的好的多

    今天下午开始整理excel这块, 微软弄的那些库简直是个坑, 什么com注册之类的净是些报错. 在网上搜资料偶然碰见npoi ,好东西,值得使用 NPOI是指构建在POI 3.x版本之上的一个程序,N ...

  5. Error while executing: am start -n

    单纯clean project是不行的,选择File-Invalidate Caches/Restart,清除缓存,重启AS Android NDK 是在SDK前面又加上了"原生" ...

  6. 单点登录(SSO)原理与案例

    单点登录业务流程 概要 详细流程 单点登录系统一共有三个模块,1.服务端 2.客户端 3.代理模块端 用户发送访问客户端的请求,被客户端的代理模块的拦截器拦截,判断cookie中是否含有token(令 ...

  7. CSS 样式中的两个方法

    在很多时候,我们需要LI开头空一点距离.结尾不能再有下划线了.这个效果在以前是很难实现的.但是有了下面两个选择器,非常容易做出这种东西. .slideTxtBox .bd ul > :first ...

  8. 操作系统学习笔记(三) windows内存管理

    //系统物理页面是由 (Page Frame Number Database )简称PFN数据库来进行管理,实际上是一个数组,每个物理页面都对应一个PFN项. 进程的地址空间是通过VAD(Virtua ...

  9. Linux环境下java开发环境搭建一 JDK搭建

    第一步:下载jdk压缩文件 第二步:上传到家目录下的soft目录下,可以采用winscp,此处下载的是.tar.gz文件 第三步:解压压缩文件,并在/usr/local目录下创建一个jdk7的目录,并 ...

  10. [uboot] (番外篇)uboot relocation介绍

    http://blog.csdn.net/ooonebook/article/details/53047992 以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为 ...