Oracle PL/SQL,游标,过程
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,游标,过程的更多相关文章
- Oracle PL/SQL 游标
在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个 ...
- Oracle PL/SQL游标
游标的提出: SQL是面向集合的,其结果一般是集合量(多条记录),而PL/SQL的变量一本是标量,其一组变量异常一直只能存放一条记录.所以仅仅使用变量并不能完全满足SQL语句向应用程序输出数据的要求. ...
- [oracle]pl/sql --分页过程demo
这句sql能够用来查询一张表中的特定位置的记录 --查询的方法获取分页的语句 select *from (select t1.*,rownum rn from (select *from books) ...
- [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)
原文:[推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]ORACLE PL/SQL编程之四: 把游标说透(不怕做不到,只怕想不到) 继上两篇:ORACLE PL ...
- ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)
原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!) 继上篇:ORACLE P ...
- ORACLE PL/SQL编程详解
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
- [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)
原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...
- ORACLE PL/SQL编程之八:把触发器说透
原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...
- [推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼、百战不殆)
原文:[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼.百战不殆) [推荐]ORACLE PL/SQL编程之五: 异常错误处理(知已知彼.百战不殆) 继上三篇:ORACLE PL/S ...
- [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)
原文:[推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆) [推荐]ORACLE PL/SQL编程详解之三: PL/SQL流程控制语句(不给规则,不成方圆) ...
随机推荐
- Js学习(6) 标准库-Array对象
Array是Js的原生对象,同时也是一个构造函数,可以用它生成新的数组 用不用new结果都一样 var arr = new Array(2); // 等同于 var arr = Array(2); 但 ...
- 47-java 排列组合
import java.util.HashSet; public class Main1 { public static int ys = 0; public static int ys2 = 0; ...
- vue修改端口号
vue修改端口号 默认端口号 修改端口号 重新启动项目 npm run dev
- Debian 使用 Samba 服务为 Windows 客户端和 Linux 客户端提供文件服务
1 目标 1.1 主机采用 Debian,为 Windows 和 Liunx 客户端提供文件存取服务 1.2 Windows 采用 GB2312 编码,Linux 采用 UTF-8 编码,要求中文不出 ...
- UVA 10100 Longest Match
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=13&p ...
- Python中删除easy_install安装的包
网上查了一大圈,终于在官网上找到了.记一下,备忘...
- Django的学习进阶(二)———— name
一.问题: 在做完第一个demo的时候,由于只是基础学习,所以对于name的使用并不需要很熟练,也不用理解的很深.但是在做音乐网站的时候遇到了关于如何使用name的内容. 由于一个app中会使用到另一 ...
- class反射
1.获取类的方式: //第一种方式: Class c1 = Class.forName(User); //第二种方式: //java中每个类型都有class 属性. Class c2 = User.c ...
- urlrewrite的rule怎么写
一.正则表达式教程 常用正则如下: . 换行符以外的所有字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d ...
- 让photoshop cc 支持 webp格式
下载WebP.8bi文件,看PS cc 是32位还是64位,找到对应的文件. brushes8.com-2017-11-03_08-29-21_654098.7z 把 WebP.8bi 复制到pho ...