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. vue 和 react 路由跳转和传参

                      react  1 .跳转方式加传参 this.props.history.push({ //地址 pathname: '/film/Details', //路由传参 ...

  2. [leetcode]52. N-Queens II N皇后

    The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...

  3. BZOJ4377 Kurs szybkiego czytania \ Luogu 3589[POI2015]KUR - 数学思维题

    Solution 我又双叒叕去看题解啦$QAQ$, 真的想不到鸭 输入 $a$ 和 $n$ 互质, 所以满足 $a \times i \ mod \ n$ $(0<=i<n)$ 肯定是不重 ...

  4. Zookeeper系列3 实现分布式锁

    基本思路 1 client调用create()方法创建“/locks/_lock_”临时顺序节点,注意节点类型是EPHEMERAL_SEQUENTIAL 2 client调用getChildren(& ...

  5. CentOS6.9安装Python-3.6.3

    CentOS6.9上默认安装的python版本是2.6的.因为系统自带的python会被系统很多软件环境依赖使用,所以不要卸载原来的Python版本,根据需要进行安装新版本即可,本人此处安装的是3.6 ...

  6. [c#.net]未能加载文件或程序集“”或它的某一个依赖项。系统找不到指定的文件

    问题是这样嘀: 项目采用了三层架构和工厂模式,并借鉴了PetShop的架构,因为这个项目也是采用分布式的数据库,目前只有三个数据库,主要出于提高访问性能考虑. 原来是按照网上对PetShop的介绍来给 ...

  7. 返回头部js

    $('.backTop, .backCss').click(function() { var id=$(this).attr('class'); $('html, body').animate({sc ...

  8. CentOS7:ifconfig command not found解决

    https://blog.csdn.net/dandelion_drq/article/details/53503487

  9. valgrind内存检测工具

    valgrind 那点事 ---------------------------------------内存检测工具 valgrind要使用此工具,可以使用--tool=memcheck 在Valgr ...

  10. noip第18课资料