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流程控制语句(不给规则,不成方圆) ...
随机推荐
- pushf和popf
pushf的功能是将标志寄存器的值压栈,而popf是从栈中弹出数据,送入标志寄存器中.
- boost::asio 学习
安装 下载-解压 指定安装目录 ./bootstrap.sh --prefix=/usr/local/boost_1_68_0 查看所有必须要编译才能使用的库 ./b2 --show-librarie ...
- Linux安装redis服务器
Linux安装redis服务器 初次接触,这里简单的说下我遇到的情况以及安装方法,当然也是参考了诸位大神的. 确定虚拟机的主机IP. 1)首先需要一个linux虚拟机,确定虚拟机的ip ,输入命令:# ...
- PostFix添加多个端口
/usr/local/*/config/postfix/master.cf 在/etc/services中搜索smtp,复制,添加smtp2<与上面一步对应起来的服务名>,后面为需要添加的 ...
- mysql自动删除90天前数据
#coding:utf-8import MySQLdb #方法1直接在Navicat中添加计划任务#DELETE FROM message2 where SEND_TIME < UNIX_TIM ...
- maven pom.xml文件 仓库搜索服务
POM(Project Object Model),即项目对象模型,是 Maven 工程的基本工作单元,是一个 XML 文件,包含了项目的基本信息,用于描述项目如何构建.声明项目依赖 等等 Maven ...
- 【APP测试(Android)】--安装卸载
- jenkins可选插件为空的解决方式
我是安装的jenkins,文件名字是这个jenkins.msi,点finish安装完成,然后浏览器就自动打开了jenkins页面,输入密码后,便进入了如下页面 之后我是选择的跳过插件安装,在可选插件里 ...
- ubuntu 应用添加进环境变量
BG:公司同事使用的电脑系统大多为windows ,有部分mac和Ubuntu(我就是那个部分Ubuntu),某些情况为了统一格式,便下载了一些解压即可使用的软件,但是每次点开文件夹然后点开程序很繁琐 ...
- 使用GetAdaptersInfo时,网卡类型的值为71
使用GetAdaptersInfo时,网卡类型的值为71,代表无线网卡.