SQL强化(二) 在Oracle 中写代码

一  : 关于查询中的转换

-- 字符串转换 一 : decode 函数 转换

SELECT
DECODE (
PROTYPE.PRO_TYPE_DATE,
'L',
'长',
'm',
'短',
'默认值'
)
FROM
PROTYPE

-- 字符串转换  二 : case 转换

SELECT
T1.PRO_TYPE_ID,
T1.PRO_TYPE_NAME,
CASE T1.PRO_TYPE_DATE
WHEN 'S' THEN
'短'
WHEN 'L' THEN
'长'
ELSE
'默认值'
END AS text
FROM
PROTYPE t1

case when then 有点类似于java中的switch case 

二 : 在Oracle 中写代码 

 

1 ,什么是代码块
2 ,变量定义 declare
3 , 代码块开始 begin
4,  代码块结束 end
5 , 赋值 := / 通过表字段给变量赋值 into

declare 声明的意思 定义变量用的

begin 代表代码块开始

end 代表代码块结束

:= 给变量赋值

dbms_output.put_line('打印并换行')

dbms_output.put('打印不换行')

定义变量  a = 10 ,b = 10 并分别打印a和b

DECLARE A NUMBER (10) := 10 ; b NUMBER (10) ;
BEGIN
b := 100 ; dbms_output.put_line (A) ; dbms_output.put_line (b) ;
END ;

结果  : 

 

 

 

if  条件 then 执行; end if;

 

DECLARE A NUMBER (10) := 10 ; b NUMBER (10) ;
BEGIN
b := 100 ;
IF b = 100 THEN
b := 13 ;
END
IF ; dbms_output.put_line (A) ; dbms_output.put_line (b) ;
END ;

输出结果 : 

if  条件 then 执行; elsif 条件 then 执行; else 执行; end if;

DECLARE A NUMBER (10) := 10 ; b NUMBER (10) ;
BEGIN
b := 99 ;
IF b = 100 THEN
b := 13 ;
ELSIF b = 99 THEN
b := 16 ;
ELSE
b := 17 ;
END
IF ; dbms_output.put_line (A) ; dbms_output.put_line (b) ;
END ;

输出结果为 16

loop 循环 <<oneloop>> 定义循环名称,循环嵌套时必须要定义,单个loop循环可以不需要 exit 循环名(没有可以不写)  when 跳出循环的条件

|| 字符串拼接 ,相当于Java中的+

DECLARE A NUMBER (10) := 10 ;
BEGIN
<< oneloop >> loop dbms_output.put_line ('打印' || 'a=' || A) ; A := A - 1 ; exit oneloop
WHEN A <= 0 ;
END loop ;
END ;

输出结果 :

 

posted @ 2017-04-18 16:17  Aaron_东科  阅读(467)  评论(0编辑  收藏  举报