Oracle入门(十四)之PL/SQL

一、PL/SQL 基本语法

PL/SQL语言是模块式的过程化SQL,是oracle公司对SQL的扩展。

(1)


(2)


(3)


(5)


(6)


(7)数据类型

  • Number 数字型
  • Varchar2 变长字符型,最大32767个字符
  • Date 日期型
  • Boolean 布尔型(TRUE,FALSE,NULL三者取一)
  • Char 定长字符型,最大32767个字符
  • Int 整数型
  • Pls_integer 整数型,产生溢出时出现错误
  • Binary_integer 整数型,表示带符号的整数
  • Long 变长字符型,最长2GB


(8)标识符

 用来命名常量、变量、游标、程序和包
1)必须以字母(A-Z)开头
2)其后跟字母、数字(0-9)或特殊字符$#_
3)标识符不超过30字符
4)标识符中不包含空格
5)标识符不能为保留字

6)标识符不区分大小写

非法标识符:12_sal; first-name; sec name;


(9)变量的定义

 变量名 数据类型 [not null] [:= 值]
例1: vn_snum number;
例2: vs_name varchar2(10);
例3: vn_sid tab_server.sid%type ;   --锚定列


(10)常量定义
 常量名 constant 数据类型 [not null] :=值

 例1:vn_num constant number := 10;


(11)

(12)赋值语句: 赋值语句
 包括直接赋值和间接赋值
 直接赋值 v_num := 20000;
 间接赋值(select into、fetch into)
 select max(innum), min(innum)
 into v_max, v_min

 from tab_ingoods;


二、应用案例
编写一个匿名块程序实现:

根据一个员工姓名的本月绩效(变量初始值为10)计算并输出该员工本月收入

本月收入=基本工资(salary)+佣金百分比(COMMISSION_PCT)*绩效

set serveroutput on --dbms_output 输出有效,用在sql developer
declarev_b number:=10; --初始值v_lastname varchar2(10):=‘XXX';-- v_firstname employees.first_name%type; --锚定变量v_salary number(6,2);
beginselect nvl(salary,0)+nvl(COMMISSION_PCT,0)*v_binto v_salary --间接赋值from employees where last_name=v_lastname;dbms_output.put_line(v_lastname||'本月的工资为:'||v_salary);
end;


三、PL/SQL 基本结构

(1)条件控制语句 

declaretheGrade number:= 88;
beginif theGrade>=90 thendbms_output.put_line('杰出');elsif theGrade>=80 thendbms_output.put_line('优秀');elsif theGrade>=60 thendbms_output.put_line('合格');elsedbms_output.put_line('不及格');end if;
end; 

(2)循环

简单循环

set serveroutput on;
declarei number(8):=5;
begin<<first_loop>>loopdbms_output.put_line('i = '||i);i:= i-1;exit first_loop when i = 0;end loop;dbms_output.put_line('LOOP循环已经结束!');
end;
For循环

beginFor循环for i in -3..3 loopdbms_output.put_line('i = '||i);end loop;dbms_output.put_line('FOR循环已经结束!');
end;
While循环

declarei number(8):=5;
While循环
beginwhile(i > 0) loopdbms_output.put_line('i = '||i);i:=i-1;end loop while_loop;dbms_output.put_line('WHILE循环已经结束!');
end;

Case语句

set serveroutput Case语句on
declaregender varchar2(20):= '男';
begincase genderwhen '男' then dbms_output.put_line('勇敢');when '女' then dbms_output.put_line('漂亮');else dbms_output.put_line('人妖');end case;
end; 

Goto语句 

DECLAREi number;
BEGINi:=5;<<repeat_loop>> --循环点DBMS_OUTPUT.PUT_LINE('i='||i);i:=i-1;IF i>0 THENGOTO repeat_loop; --小于5,就goto到repeat_loopEND IF;
END;

注:Oracle入门(十四A)之PL/SQL 基本结构


四、异常处理

DECLARE v_empno employees.employee_id%TYPE:= &empno;v_sal employees.salary%TYPE;
BEGINSELECT salary INTO v_sal FROM employeesWHERE employee_id = v_empno;IF v_sal<=15000 THENdbms_output.put_line('编码为'||v_empno||'员工该加100元!');ELSEdbms_output.put_line('编码为'||v_empno||'员工工资已经超过规定值!');END IF;
EXCEPTIONWHEN NO_DATA_FOUND THENdbms_output.put_line('数据库中没有编码为'||v_empno||'的员工');WHEN TOO_MANY_ROWS THENdbms_output.put_line('程序运行错误!请使用游标');WHEN OTHERS THENdbms_output.put_line(SQLCODE||'---'||SQLERRM);
END;

注:Oracle入门(十四B)之PL/SQL异常处理



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

26.文件使用磁盘的代码实现

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 2.文件内容复习&#xff1a; 1&#xff09;如何从生磁盘抽象为文件&#xff1f; 核心是从字符流位置算出盘块号&#xff1b;2&#xff09;如何算出盘…

.NET Core全新的配置管理[共9篇]

提到“配置”二字&#xff0c;我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影&#xff0c;那就是我们再熟悉不过的app.config和web.config&#xff0c;多年以来我们已经习惯了将结构化的配置信息定义在这两个文件之中。到了.NET Core的时候&#xff0c;很多我们…

redis存opc_KEPServerEX6完整免费版

KEPServerEX6完整免费版是一款先进的连接平台&#xff0c;主要用于为您的应用程序提供单一来源的工业自动化数据&#xff0c;通过连接、管理、监视和控制不通的自动化设备和应用程序来实现工业数据。具有严谨的技术特征&#xff0c;支持多达250种以上的通讯协定&#xff0c;可连…

Oracle入门(十四B)之PL/SQL异常处理

定义&#xff1a;程序执行过程的警告或错误成为例外(Exception) 一、常见预定义错误 二、非预定义错误及用户定义错误 &#xff08;1&#xff09;非预定义oracle错误其他标准的oracle错误,可以自定义异常名&#xff0c;将其与指定oracle错误关联&#xff0c;由系统触发。 例子…

C#读书雷达 | TW洞见

大家都知道&#xff0c;ThoughtWorks的技术雷达每年都会发布两到三次&#xff0c;它不但是业界技术趋势的标杆&#xff0c;更提供了一种卓有成效的方法论&#xff0c;即打造自己的技术雷达。在这种思想的驱动下&#xff0c;我们诞生了自己的读书雷达。但这份雷达略显high level…

27.目录与文件系统

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 2.第4层抽象&#xff1a;抽象整个磁盘到文件系统 【1】文件系统&#xff0c;抽象整个磁盘&#xff08;第4层抽象&#xff09; 【图解】整个磁盘抽象1…

dd命令打包多个文件_linux的tar命令详情;linux多个文件压缩打包到一个压缩文件...

tar命令可以用来压缩打包单文件、多个文件、单个目录、多个目录。Linux打包命令_tartar命令可以用来压缩打包单文件、多个文件、单个目录、多个目录。常用格式&#xff1a;单个文件压缩打包 tar czvf my.tar.gz file1多个文件压缩打包 tar czvf my.tar.gz file1 file2,...(file…

28.文件目录解析代码实现

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 背景&#xff1a; 磁盘格式化后&#xff0c;其组成部分包括引导块&#xff0c;超级块&#xff0c;inode使用位图&#xff0c;盘块使用位图&#xff0…

Oracle入门(十四A)之PL/SQL 基本结构

一、条件控制语句 &#xff08;1&#xff09;条件语句Iif…then…end if形式1:if <布尔表达式> then…(pl/sql和sql)…end if;&#xff08;2&#xff09;条件语句II if…then…else … end if 形式2&#xff1a;if <布尔表达式> then…(pl/sql和sql)else…end if;…

利用记事本创建一个ASP.NET Core RC2 MVC应用

步骤一、安装最新的.NET Core SDK 我们可以根据自身的操作系统环境从https://github.com/dotnet/cli上下载.NET Core最新的SDK&#xff0c;这个SDK包含.NET Core Runtime和一些有用工具&#xff08;比如命令行&#xff09;。如果你已经安装了老旧的版本&#xff0c;我个人建议你…

datatable中某一列最小值_获取DataTable 某一列所有值

//获取某一列值string orderids (from d in dt.AsEnumerable() select d.Field("OrderID")).ToList().ListToString();/// /// 判断字符串是否在某字符串数组当中/// /// /// /// public static bool In(this string value, params string[] items){return items.An…

29.操作系统对磁盘的4层抽象小结

【README】 本文总结了操作系统 对磁盘的4层抽象&#xff0c;并给出了详细介绍的post 链接&#xff1b; 【1】对磁盘的4层抽象 【1.1】对磁盘的第1层抽象 通过盘块号读写磁盘&#xff08;读写多个扇区&#xff09;&#xff1b; 因为磁盘底层操作的单位是扇区&#xff08;51…

Oracle入门(十四C)之转换函数

一、数据转换类型 为数据库创建表时&#xff0c;SQL 程序员必须定义在表的各个字段中存储何种数据。在 SQL 中&#xff0c;有几种不同的数据类型。这些数据类型用于定义每个列中可以包含的值的范围。 &#xff08;1&#xff09;在本文中将使用以下数据类型VARCHAR2 CHAR NUMBER…

发布在即!.NET Core 1.0 RC2已准备就绪

先说点废话&#xff0c;从去年夏天就开始关注学习ASP.NET Core&#xff0c;那时候的版本还是beta5&#xff0c;断断续续不停踩坑、一路研究到11月份RC1发布。 在这个乐此不疲的过程里&#xff0c;学习了很多新的东西&#xff0c;对ASP.NET Core也是越来越喜爱。然而到现在&…

1.java IO模型(BIO,NIO,AIO)

【README】 本文介绍了 3种 java io模型&#xff0c;包括 BIO&#xff0c;NIO&#xff0c; AIO&#xff1b; IO模型名称 描述 工作原理 BIO-Blocking IO 同步并阻塞式IO 一个服务器线程处理一个客户端连接 NIO-Non-blocking IO 同步非阻塞式IO 一个服务器线程处理多个…

Oracle入门(十四D)之常规函数

一、NULL处理 &#xff08;1&#xff09;函数的计算过程 到目前为止&#xff0c;您已经学会了在简单语句中应用单行函数。不过&#xff0c;函数可以嵌套任意层。所以&#xff0c;了解嵌套函数的计算过程非常重要。下例就是一个嵌套函数。其计算过程是从最里层开始计算&#xff…

python定义函数prime判断是否是素数_用自定义函数判断素数 用C语言编写自定义函数prime(int x),判断x是否为素数?...

用C语言编写自定义函数prime(int x)&#xff0c;判断x是否为素数&#xff1f;int prime(int x){int i&#xff0c;kk(int)sqrt( (double)x )for(i2i&ltki )if(x%i0)break// 如果完成所有循环&#xff0c;那么x为素数if(i&gtk)retrun 1elsereturn 0}C语言&#xff0c;编…

构建高性能.NET应用之配置高可用IIS服务器-第一篇:IIS必须掌握的知识

正确而合理的配置IIS是构建一个高性能和高可扩展应用的基础。虽然很多的时候采用默认的配置就已经可以处理一般的情况&#xff0c;但是随着站点应用的发展&#xff0c;特别是当访问量稍微大一点的时候&#xff0c;就会暴露出很多我们认为的“奇奇怪怪”的问题。 所以&#xff0…

3.NIO选择器(基于NIO的服务器与客户端通讯)

【README】 本文总结自B站《尚硅谷netty》&#xff0c;很不错&#xff1b; 【1】选择器Selector&#xff08;多路复用器&#xff09; 【1.1】基本介绍 1&#xff09;Java 的 NIO&#xff0c;用非阻塞的 IO 方式。可以用一个线程&#xff0c;处理多个客户端连接&#xff0c;就…

perplexity 衡量指标_求通俗解释NLP里的perplexity是什么?

高赞回答讲得已经非常通俗易懂&#xff0c;不过由于自然语言处理的发展&#xff0c;出现了许多不同类型的模型&#xff0c;对困惑度这个指标的计算方法颇有不同(包括前面的高赞回答也只是展开了一个子集)&#xff0c;常常让人摸不着头脑。所以这个回答旨在尽量全面地梳理不同语…