暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle PL/SQL编程基础简介及实践 <三>

蕾蕾的成长游记 2019-05-15
315



8、运算符

      1>、关系运算符:

=、<> ~= != ^= 、>、>=、<、<=

      2>、一般运算符:

+、-、*、/、:=(赋值号)、..(范围运算符)、||、=>(关系号)

      3>、逻辑运算符:

is null、in、and、or、not、between and

      4>、注意事项:

  1)变量赋值:先声明再赋值。

          v_storePhone varchar2(11); --手机号码

          v_storePhone := '158' || lpad(abs(dbms_random.random), 8, 0);

  2)null+数字 为null,null||字符串 为字符串

  3)boolean类型的值只能取 true false null3个值

9、流程控制语句

1)  语句分类:  控制语句(IF)、

                      循环语句(LOOP 、EXIT) 

                      顺序语句(GOTO、NULL)

2)  结构说明

a)

IF <布尔表达式> THEN

 PL/SQL语句和SQL语句

END IF;

b)

IF <布尔表达式> THEN

 PL/SQL语句和SQL语句

ELSE

其他语句

END IF;


IF <布尔表达式1> THEN

 PL/SQL语句和SQL语句1

ELSIF <布尔表达式2> THEN

其他语句1

ELSIF <布尔表达式3> THEN

其他语句2

ELSE 

其他语句3

END IF;


IF语句示例

declare

 v_roleId varchar2(20); --角色编号

v_result varchar2(60);

begin

 for vv in (select distinct su.role_id

 from test_ur su

 where su.role_id in ('project_sz',

 'project_bj',

 'project_gz',

 'project_sh')) loop

 if (vv.role_id = 'project_sz') then

 v_result := vv.role_id || '_表示的是_角色1';

 dbms_output.put_line(v_result);

 elsif (vv.role_id = 'project_sh') then

 v_result := vv.role_id || '_表示的是_角色2';

 dbms_output.put_line(v_result);


elsif (vv.role_id = 'project_gz') then

 v_result := vv.role_id || '_表示的是_角色3';

 dbms_output.put_line(v_result);

elsif (vv.role_id = 'project_bj') then

 v_result := vv.role_id || '_表示的是_角色4';

 dbms_output.put_line(v_result);

else

 v_result := vv.role_id || '_表示的是_未知角色';

dbms_output.put_line(v_result);

 end if;

end loop;

 dbms_output.put_line(to_char(sysdate, 'hh24:mi:ss') || '处理成功');

end;


loop语句示例

loop

执行的语句

exit when <条件语句>; --当条件为满足时,退出循环

end loop;

--loop示例

declare

 v_count number;

 v_time number;

begin

 v_count := 0;

 loop

 v_count := v_count + 1;

 dbms_output.put_line('第' || v_count || '次循环');

exit when(v_count > 3);

 end loop;

end;


while语句示例

while <布尔表达式> loop

执行的语句

end loop;

--while示例

declare

 v_count number;

 v_time number;

begin

 v_count := 0;

 while (v_count < 3) loop

 v_count := v_count + 1;

 dbms_output.put_line('第' || v_count || '次循环');

end loop;

end;


for循环语句示例

for 循环计数器 in [reverse]下限 .. 上限 loop

执行的语句

end loop;

每循环1次,计数器自动加1,加上reverse关键字则自动减1,必须为从小到大的整数,可以使用exit when 退出循环

declare

 v_count number;

begin

 v_count := 8;

 for i in 1 .. v_count loop

 dbms_output.put_line('第' || i || '次循环');

exit when(i > 3);

 end loop;

end;


case when循环语法

--语法1

case 条件表达式

when 表达式结果1 then

语句1

 ...

 when 表达式结果n then

语句n

 [else 表达式结果]

end case;


--语法2

case 条件表达式

when 表达式结果1 then

语句1

 ...

 when 表达式结果n then

语句n

 [else 语句]

end case;


case when语句示例

select trunc(tur.created_date, 'dd'),

 count(case

 when tur.role_id = 'project_sh' then

 1

 else

 null

 end) as 角色1,

 count(case

 when tur.role_id = 'project_gz' then

 1

 else

 null

 end) as 角色2,


count(case

 when tur.role_id = 'project_sz' then

 1

 else

 null

 end) as 角色3,

 from test_ur tur

 group by trunc(tur.created_date, 'dd')

 order by trunc(tur.created_date, 'dd') desc;


5)goto 无条件跳转到指定标签所在部分

goto lable

<<lable>>

6)null 不执行任何操作的语句

待续  ......


文章转载自蕾蕾的成长游记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论