五、PL/SQL循环、游标、函数和过程
--PL/SQL基础知识学习
--一、PL/SQL语句块,基础语法格式
DECLARE
--变量声明列表
info varchar(25); --变量声明
stu_unm integer := 15;
BEGIN
--语句块
info := 'soulsjie'; --变量的赋值
DBMS_OUTPUT.put('HELLO WORLD!'); --输出不换行
DBMS_OUTPUT.put_line(info || stu_unm); --输出换行 ||为字符串的连接符
--异常处理块
END; --1.循环
--1.1for循环
DECLARE
i INTEGER :=1;
j INTEGER :=10;
BEGIN
FOR S IN i .. j LOOP
DBMS_OUTPUT.put_line('序号是'||S);
END LOOP;
END; --1.2if语句
DECLARE
chengji integer;
BEGIN
chengji :=&temp;
DBMS_OUTPUT.put_line('您输入的成绩是:'||chengji);
IF chengji>90 THEN --注意不需要';’号
DBMS_OUTPUT.put_line('优秀');
ELSIF chengji>=60 THEN --注意不是ELSEIF
DBMS_OUTPUT.put_line('及格');
ELSE
DBMS_OUTPUT.put_line('不及格');
END IF;
END; --1.3while循环
DECLARE
chengji integer :=10;
BEGIN
WHILE chengji>0 LOOP
DBMS_OUTPUT.put_line(chengji);
chengji :=chengji-1;
END LOOP;
END; --1.4do whlie 循环
DECLARE
i INTEGER :=12;
BEGIN
LOOP
DBMS_OUTPUT.put_line(i);
i:=i-1;
EXIT WHEN i=0;
END LOOP;
END; --1.5case 语句
DECLARE
i VARCHAR(20);
BEGIN
i :='&temp';
CASE i
WHEN 'y' THEN DBMS_OUTPUT.put_line('您选择了是');
WHEN 'n' THEN DBMS_OUTPUT.put_line('您选择了否');
ELSE DBMS_OUTPUT.put_line('默认项');
END case;
END; SELECT I.STU_ID 学号,
(CASE I.STU_SEX
WHEN '男' THEN
'1'
WHEN '女' THEN
'0'
ELSE
'未知'
END)
FROM STU_INFO I; --1.6 GOTO 语句
--创建节点,跳转到指定节点
DECLARE
BEGIN
<<a>>
DBMS_OUTPUT.put_line('A');
goto c;
<<b>>
DBMS_OUTPUT.put_line('B');
<<c>>
DBMS_OUTPUT.put_line('C');
END; --2.SELECT INTO 的用法。统计学生信息表中的学生总数
--select into 将查询到的结果赋给变量
DECLARE
TEMP INTEGER;
us_name VARCHAR(20);
BEGIN
SELECT COUNT(*) INTO TEMP FROM (SELECT DISTINCT STU_ID FROM STU_INFO);--查询学生信息记录条总数
DBMS_OUTPUT.put_line('总记录条数有'||TEMP||'条');
SELECT I.STU_NAME INTO us_name FROM STU_INFO I WHERE I.STU_ID='180301';--查询指定账号的学生姓名
DBMS_OUTPUT.put_line('姓名是:'||us_name);
END; --3.cursor 利用游标读取数据 遍历一个记录集
--%ISOPEN(游标是否已经打开) /%FOUND(遍历到数据) /%NOTFOUND(未遍历到数据) /%ROWCOUNT(遍历到数据的记录条数)
DECLARE
CURSOR youbiao1 IS SELECT * FROM STU_INFO I WHERE I.STU_SEX='男'; --a.创建一个游标
temp youbiao1%rowtype;--b.创建一个变量 记录每行内容
BEGIN
IF NOT youbiao1%ISOPEN THEN OPEN youbiao1;--c.若该游标未打开则打开该游标
DBMS_OUTPUT.put_line('游标已被打开');
END IF;
LOOP --d.利用循环让游标读取数据
FETCH youbiao1 INTO temp;
EXIT WHEN youbiao1%NOTFOUND;--e.当记录读取完毕跳出循环
DBMS_OUTPUT.put_line(temp.STU_NAME);
END LOOP;
CLOSE youbiao1;--f.关闭游标
DBMS_OUTPUT.put_line('游标已关闭');
END; --4.异常处理
DECLARE
aa INTEGER;
BEGIN
aa:=1/0;--函数执行
EXCEPTION WHEN OTHERS THEN--异常处理块
DBMS_OUTPUT.put_line('出现异常!');
END; --二、函数的创建和使用
/*基本格式
CREATE [OR REPLACE] FUNCTION FUN_NAME [(参数1 参数类型, 参数2 参数类型, 参数n 参数类型)]
RETURN 返回值类型
IS
BEGIN
函数体
RETURN 具体的返回值;
END FUN_NAME;
*/
--创建无参数函数
CREATE OR REPLACE FUNCTION F_WUCANSHU RETURN INTEGER
IS
BEGIN
RETURN 3+6;
END F_WUCANSHU;
SELECT F_WUCANSHU FROM DUAL;--函数的调用 --创建有参函数
CREATE OR REPLACE FUNCTION F_YOUCANSHU(num1 INTEGER,num2 INTEGER) RETURN INTEGER
IS
BEGIN
RETURN (num1*num2);
END F_YOUCANSHU;
SELECT F_YOUCANSHU(&数字1,&数字2) 乘积是 FROM DUAL;--调用有参函数 --创建函数 按照用户输入的学生学号查询该学生的姓名信息
CREATE OR REPLACE FUNCTION F_SEARCH_NAME(stu_id VARCHAR) RETURN VARCHAR
--注意参数的声明不带长度,如:(stu_id VARCHAR)
IS
temp VARCHAR(20);
stu VARCHAR(20);
BEGIN
stu:=stu_id;
SELECT DISTINCT STU_NAME INTO temp FROM STU_INFO WHERE STU_ID=stu;--将查询到的学号保存到变量temp中
RETURN temp;--将结果返回
END F_SEARCH_NAME;
SELECT F_SEARCH_NAME('&请输入要查询的学号') 查询结果 FROM DUAL; --三、过程的创建和使用
--完成数据库中特定的任务,可以永久保存在数据库中供其他程序使用
--3.1过程创建的基本格式
/*CREATE [OR REPLACE] PROCEDURE PRO_NAME
[参数名 IN 参数类型, ... 参数N IN 参数N的类型]
IS
BEGIN
//过程要执行的代码体
END;
*/
CREATE OR REPLACE PROCEDURE insert_stuinfo(
stu_id IN VARCHAR,--注意在声明参数的类型时不加长度 与函数的参数声明(canshu VARCHAR)不同
stu_name IN VARCHAR,
stu_class IN VARCHAR,
stu_sex IN VARCHAR
)
IS
BEGIN
INSERT INTO STU_INFO VALUES(stu_id,stu_name,stu_class,stu_sex);--过程要执行的SQL语句块
END;
CALL insert_stuinfo('jie','jie','jie','jie');--存储过程的调用
五、PL/SQL循环、游标、函数和过程的更多相关文章
- ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)
原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!) 继上篇:ORACLE P ...
- 在PL/SQL使用游标获取数据及动态SQL
1.游标概念: 当在PL/SQL块中执行DML(增删改)时,Oracle会为其分配上下文区(Context Area),游标是指向上下文区的指针 2. 游标分类: A. 隐式游标 a. 在PL/ ...
- oracle pl/sql简介、块、过程
pl/sql语言是oracle在sql上扩展的语言.1 过程.函数.触发器是在pl/sql编写2 过程.函数.触发器是在oracle中3 pl/sql的语句可以在java中直接调用 简单介绍 在sql ...
- PL/SQL使用游标CURSOR
一.使用游标 对于DML语句和单行select into ,oracle自动分配隐形游标.处理select返回多行语句,可以使用显式游标. 使用显示游标处理多行数据,也可使用SELECT..BULK ...
- PL/SQL 循环语句
1.基本 LOOP 循环语句 语法: LOOP 语句序列; END LOOP; 其中,语句序列中需要一个EXIT语句或一个EXIT WHEN语句来中断循环. 实例: DECLARE x ) :; BE ...
- Oracle PL/SQL,游标,过程
1.PL/SQL 语法相关 -- SQL 语言只是访问,操作数据库的语言,而比并不是程序设计语言,因此不能用于程序开发. -- PL/SQL 是在标准SQl语言上进行过程性扩展后形成的程序设计语言, ...
- PL/SQL规范、块、过程、函数、包、触发器
1.pl/sql规范 标识符号的命名规范 1) 定义变量,用 v- 作为前缀 v-sal 2)定义常亮, 用 c- 作为前缀 c-rate 3) 定义游标,用 cursor作为后缀 emp_curso ...
- PL/SQL循环
1.if循环做判断 SET SERVEROUTPUT ON accept num prompt 'qinshuu'; DECLARE pnum NUMBER :=& num ; BEGIN T ...
- PL/SQL之--游标
一.游标简介 在PL/SQL中执行SELECT.INSERT.DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),也称为缓冲区.游标是指向该区的一个指 ...
随机推荐
- 寻找项目中顶级Vue对象 (一)
个人博客首发博客园: http://www.cnblogs.com/zhangrunhao/ 参考 感谢作者 从一个奇怪的错误出发理解 Vue 基本概念 安装 - Vue.js 渲染函数 - Vue. ...
- (转)生产者/消费者问题的多种Java实现方式
参考来源:http://blog.csdn.net/monkey_d_meng/article/details/6251879/ 生产者/消费者问题的多种Java实现方式 实质上,很多后台服务程序并发 ...
- String的用法——构造方法
package cn.itcast_01; /* 字符串:就是多个字符组成的一串数据,也可以看成一个字符数组 *通过API,我们得知: A: 字符串字面值,如abc,也可以看做一个对象 B:字符串是常 ...
- [ SNOI 2013 ] Quare
Description 题目链接 求一张无向带权图的边双连通生成子图的最小代价. Solution 核心的思路是,一个点双连通分量肯定是一堆环的并. 考虑增量地构造这个边双连通图,每次把一个环并进去, ...
- python实现: protobuf解释器
之前项目为了自动化,所以写一个protobuf的解释器,用来生成项目所需的格式. 当然现在通过以下链接的指导,跳过手工分析,直接生成代码了. https://developers.google.com ...
- Netbeans调试教程
官方教程:Netbeans调试 CC++ 项目教程.docx 1.步过: 就是把函数当成一条指令来调用 比如上面就是光执行fun(i),不会到函数里面去 2.步入 就是进入函数里面执行 3.步出 就是 ...
- Solidity 智能合约开发
需要专用浏览器或部署节点支持. Solidity (中文:固态,固体)是一种语法与Javascript相似的高级语言,它为Ethereum虚拟机(EVM)编译代码而设计. Solidity是静态类型的 ...
- 5 秒创建 k8s 集群[转]
据说 Google 的数据中心里运行着超过 20 亿个容器,而且 Google 十年前就开始使用容器技术. 最初,Google 开发了一个叫 Borg 的系统(现在命令为 Omega)来调度如此庞大数 ...
- Java数据结构和算法(四)--链表
日常开发中,数组和集合使用的很多,而数组的无序插入和删除效率都是偏低的,这点在学习ArrayList源码的时候就知道了,因为需要把要 插入索引后面的所以元素全部后移一位. 而本文会详细讲解链表,可以解 ...
- 这就是那个feature map256 256向量
http://blog.csdn.net/XZZPPP/article/details/51582810 在这个特征图上使用3*3的卷积核(滑动窗口)与特征图进行卷积,那么这个3*3的区域卷积后可以获 ...