PL/SQL常用表达式及举例(一)
IF 判断条件 THEN 满足条件时执行语句 END IF;
DECLARE
v_countResult NUMBER;
BEGIN
SELECT COUNT(empno) INTO v_countResult FROM emp;
IF v_countResult>10 THEN
DBMS_OUTPUT.put_line(v_countResult);
END if;
END;
/
IF 判断条件 THEN 满足条件时执行语句 ELSE 不满足条件时执行的语句 END IF;
DECLARE
v_countResult NUMBER;
BEGIN
SELECT COUNT(deptno) INTO v_countResult FROM dept;
IF v_countResult>10 THEN
DBMS_OUTPUT.put_line('DEPT>10');
ELSE
DBMS_OUTPUT.put_line('DEPT<10');
END IF;
END;
/
IF 判断条件1 THEN 满足条件1时执行的语句 ELSE IF 满足条件2时执行的语句ELSE所有条件都不满足时执行的语句 END IF;
DECLARE
v_countResult NUMBER;
BEGIN
SELECT COUNT(deptno) INTO v_countResult FROM dept;
IF v_countResult>10 THEN
DBMS_OUTPUT.put_line('DEPT>10');
ELSIF v_countResult<10 THEN
DBMS_OUTPUT.put_line('DEPT<10');
ELSE
DBMS_OUTPUT.put_line('DEPT=10');
END IF;
END;
/
查询EMP表的工资,输入员工编号,根据编号查询工资,如果工资高于3000元,则显示高工资,如果工资大于2000元,则显示中等工资,如果工资小于2000元,则显示低工资。
DECLARE
v_eno NUMBER;
v_sal NUMBER;
v_ename emp.ename%TYPE;
BEGIN
v_eno:=&empno;
SELECT ENAME,SAL INTO v_ename,v_sal from emp where empno=v_eno;
IF v_sal >3000 THEN
DBMS_OUTPUT.put_line(v_ename||' High salary');
ELSIF v_sal>2000 THEN
DBMS_OUTPUT.put_line(v_ename||' medium salary');
ELSE
DBMS_OUTPUT.put_line(v_ename||' low salary');
END IF;
END;
/
查询员工年薪
DECLARE
v_eno NUMBER;
v_sal emp.sal%TYPE;
v_ename emp.ename%TYPE;
BEGIN
v_eno:=&empno;
SELECT ENAME,SAL INTO v_ename,v_sal from emp where empno=v_eno;
DBMS_OUTPUT.put_line(v_ename||'''s annual salary is '||12*v_sal);
END;
/
用户输入一个雇员编号,根据它所在的部门给上涨工资,规则:10部门上涨10%,20上涨20%,30上涨30%,但是要求最高不能超过5000,超过5000就停留在5000.
我的写法
DECLARE
v_eno emp.empno%TYPE;
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
v_deptno emp.deptno%TYPE;
BEGIN
v_eno:=&empno;
SELECT DEPTNO,ENAME,SAL INTO v_deptno,v_ename,v_sal FROM EMP WHERE EMPNO=v_eno;
IF v_deptno=10 and 1.1*v_sal<5000 THEN
DBMS_OUTPUT.put_line(v_ename||','||1.1*v_sal);
ELSIF v_deptno=20 and 1.2*v_sal<5000 THEN
DBMS_OUTPUT.put_line(v_ename||','||1.2*v_sal);
ELSIF v_deptno=30 and 1.3*v_sal<5000 THEN
DBMS_OUTPUT.put_line(v_ename||','||1.3*v_sal);
ELSE
DBMS_OUTPUT.put_line(v_ename||'5000');
END IF;
END;
写法2:
Declare
v_empsal emp.sal%TYPE;
v_dno emp.deptno%TYPE;
v_eno emp.empno%TYPE;
BEGIN
v_eno:=&empno;
Select deptno,sal into v_dno,v_empsal from emp where empno=v_eno;
If v_dno=10 then
If v_empsal*1.1>5000 then
Update emp set sal=5000 where empno=v_eno;
Else
Update emp set sal=sal*1.1 where empno=v_eno;
End if;
elsIf v_dno=20 then
If v_empsal*1.2>5000 then
Update emp set sal=5000 where empno=v_eno;
Else
Update emp set sal=sal*1.2 where empno=v_eno;
End if;
elsIf v_dno=30 then
If v_empsal*1.3>5000 then
Update emp set sal=5000 where empno=v_eno;
Else
Update emp set sal=sal*1.3 where empno=v_eno;
End if;
Else
Null;
End if;
End;
/
使用CASE进行多条件判断
declare
v_sal emp.sal%TYPE;
v_job emp.job%TYPE;
v_eno emp.empno%TYPE;
BEGIN
v_eno:=&empno;
SELECT SAL,JOB INTO v_sal,v_job from emp where empno=v_eno;
case
when v_job='CLERK' then
dbms_output.put_line(v_job||','||1.05*v_sal);
when v_job='SALESMAN' then
dbms_output.put_line(v_job||','||1.08*v_sal);
when v_job='MANAGER' then
dbms_output.put_line(v_job||','||1.10*v_sal);
when v_job='ANALYST' then
dbms_output.put_line(v_job||','||1.20*v_sal);
when v_job='PRESIDENT' then
dbms_output.put_line(v_job||','||v_sal);
else
null;
end case;
end;
/
PL/SQL常用表达式及举例(一)的更多相关文章
- PL/SQL常用表达式及举例(二)
使用LOOP循环 declare v_i number:=1; begin loop dbms_output.put_line('v_i='||v_i); exit when v_i>=3; v ...
- PL/SQL常用语法及举例
PLSQL语句 DECLARE 声明部分 BEGIN 程序编写,SQL语句 EXECPTION 处理异常 END; / 声明部分(DECLARE) SQL> set serveroutput o ...
- PL/SQL常用设置 可看引用位置更清晰直观 引自:http://blog.csdn.net/xiaoqforever/article/details/27695569
引自:http://blog.csdn.net/xiaoqforever/article/details/27695569 1,登录后默认自动选中My Objects 默认情况下,PLSQL Deve ...
- oracle入门(6)——PL/SQL常用语法
[本文介绍] 本文不是”语法大全“,只是记录下作项目里自己常用的一些语法.方便查询. [语法] [输出] (1)输出语法 DBMS_OUTPUT.PUT_LINE( ) [定义] (1)定义变 ...
- PL/SQL常用设置
tools-->preferences-->user interface-->editor-->AutoReplace AutoReplaceWhen enabled, you ...
- PL/SQL设置快捷键
PL/SQL常用的快捷方式: sf= select * from sr=select t.*,t.rowid from t sd = select distinct * from d=delete f ...
- Oracle 11g系列:SQL Plus与PL/SQL
SQL Plus是Oracle提供的一种用户接口,是数据库与用户之间进行交互的工具. PL/SQL是Oracle的过程化编程语言. 1.登录SQL Plus 利用Windows的[开始]|[运行]命令 ...
- PL/SQL块与表达式
一.块(Block) 是PL/SQL的基本执行单元,由定义部分,执行部分(必须)和例外处理部分组成. Declare /*定义部分――定义常量.变量.游标.例外.复杂数据类型*/ Begin /*执行 ...
- 常用的PL/SQL开发原则
(1)广泛使用绑定变量,特别是批量绑定,因为这可以有效的避免sql的硬解析和PL/SQL引擎和SQL引擎的上下文切换!(2)广泛使用UROWID来处理DML语句(UROWID是ROWID扩展,ORAC ...
随机推荐
- Mybatis整合通用Dao,Mybatis整合通用Mapper,MyBatis3.x整合通用 Mapper3.5.x
Mybatis整合通用Dao,Mybatis整合通用Mapper,MyBatis3.x整合通用 Mapper3.5.x ============================== 蕃薯耀 2018年 ...
- MSF 内网渗透笔记
进入meterpreter模式 在meterpreter中输入shell即可进入CMD窗口接着即可执行CMD命令,例如打开RDP服务REG ADD HKLM\SYSTEM\CurrentControl ...
- 编译poco-1.7.8
运行build_vs140.cmd,运行之前可以修改一些参数,例如编译64位 buildwin 140 build shared both x64 nosamples notests devenv 修 ...
- [XPath] XPath 与 lxml (二)XPath 语法
XPath 选取节点时使用的表达式是一种路径表达式.节点是通过路径(path)或者步(steps)来选取的. 本章使用以下 XML 文档作为示例. <?xml version="1.0 ...
- C++多线程编程简单实例
C++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲一下: 创建线程的函数 HANDLE CreateThread( ...
- 基于ThinkPHP3.23的简单ajax登陆案例
本文将给小伙伴们做一个基于ThinkPHP3.2.的简单ajax登陆demo.闲话不多说.直接进入正文吧. 可能有些小伙伴认为TP自带的跳转页面挺好,但是站在网站安全的角度来说,我们不应该让会员看到任 ...
- 【EF框架】另一个 SqlParameterCollection 中已包含 SqlParameter。
查询报表的时候需要通过两次查询取出数据. 第一次,用count(*)查出总数: 第二次,用rownumber分页取出想要的页内容: 为了防止sql注入,使用SqlParameter来传递参数 var ...
- c++ vector详解
容器有太多需要清楚细节的地方,同时也有太多值得学习的地方.下文作为学习.工作中用到vector的总结. 1. 赋值运算=的实现原理 在使用赋值操作时,如果不清楚内部是怎么实现,那么用起来会畏手畏脚. ...
- 深入理解 Neutron -- OpenStack 网络实现(4):网络名字空间
问题导读1.如何查看网络名字空间?2.网络名字空间开头的名字有什么规律?3.dhcp服务是如何实现的?4.router的实现是通过iptables进行的是否正确?5.SNAT和DNAT规则有什么作用? ...
- 【前端积累】javascript事件
什么是事件? 事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信.就是文档或浏览器窗口发生的一些特定的交互瞬间(某种动作). 1.事件流 事件流描述的是从页面中接收事件的顺序. 1)事件 ...