一、Oracle控制语句
1、编写语句
--写了才会输出
set serverout on;
--开始语句
begin
--这里面开始写语句块
dbms_output.put_line('Hello'); --注意" ; "不要完了
--控制语句结束
end;
--在对话框执行时,需要输入/
2、执行语句
3、定义变量
-只定义变量
declare 变量名 数据类型;
--定义变量并赋值
declare 变量名 数据类型:赋值;
示例:
--写了才会输出
set serverout on;
--定义变量price并赋值,注意不是在语句块里面定义
declare price number:=100;
--开始语句
begin
--这里面开始写语句块
dbms_output.put_line('Hello'||price); --注意" ; "不要完了
--控制语句结束
end;
--在对话框执行时,需要输入/
注意:可以一次定义多个变量,不用每次都写declare。
示例:
set serverout on;
--定义多个变量
declare price number:=100;
productName varchar(20):='notebook';
begin
-- 凭借符号||
dbms_output.put_line(price || productName);
end;
4、赋值
定义变量并赋值
--定义变量price并赋值100,注意不是在语句块里面定义
declare price number:=100;
5、查询结果赋值
into:将查询结果赋值给定义的变量
select 查询字段1,查询字段2 into 赋值给定义的变量1,赋值给定义的变量1 from t_book where id=bs_id;
示例:
set serverout on;
declare count_books number;
begin
select count(*) into count_books from t_book;
dbms_output.put_line(count_books);
end;
定义多个变量查询结果赋值:直接有都好隔开。
select id,price into new_id,max_price from t_book where id=bs_id;
6、拼接
拼接符号||
set serverout on;
begin
-- 凭借符号||
dbms_output.put_line('Hello' || 'word');
end;
二、控制语句
注意:都是写在语句块里面。
1、普通-if条件语句
if 条件 then
条件成立逻辑
else
不成立逻辑
end if;
注意:end if;
示例:
set serverout on;
declare count_books number;
begin
select count(*) into count_books from t_book;
dbms_output.put_line(count_books);
if count_books > 2 then
dbms_output.put_line('总记录数大于2');
else
dbms_output.put_line('总记录数不大于2');
end if;
end;
输出结果:
2、复杂-else-if
示例:
set serverout on;
declare count_books number;
begin
select count(*) into count_books from t_book;
dbms_output.put_line(count_books);
if count_books = 1 then dbms_output.put_line('总记录数等于1');
else if count_books >2 then dbms_output.put_line('总记录数大于2');
else dbms_output.put_line('总记录数为0');
end if;
end if;
end;
注意: 有多少个if,就必须要有多少个end if。
三、流程控制
1、case when then
case 判断值
when 判断值等与值1 then 1满足时成立时逻辑;
when 判断值等与值2 then 1满足时成立时逻辑;
when 判断值等与值3 then 1满足时成立时逻辑;
else 都不满足时逻辑;
end case;
注意:不要忘记end case;
示例:
set serverout on;
declare count_books number;
begin
select count(*) into count_books from t_book;
dbms_output.put_line('总记录数=' || count_books);
case count_books
when 1 then dbms_output.put_line('有1条记录');
when 2 then dbms_output.put_line('有2条记录');
when 2 then dbms_output.put_line('有3条记录');
else dbms_output.put_line('都不满足条件');
end case;
end;
四、循环
1、无条件循环-loop
loop
跳出循环控制,不然一直循环;
要操作的逻辑;
end loop;
示例:查询表中从id为2的书的价格,当大于id大于4时,跳出无线循环。
原始表数据:
set serverout on;
declare bs_id number:=2;
max_price number;
new_id number;
begin
loop
--跳出无线循环的条件,exit后面必须要有分号。if必须要用endif
if(bs_id >4) then
exit;
end if;
select id,price into new_id,max_price from t_book where id=bs_id;
dbms_output.put_line('书名ID为:'|| new_id || '的书价格为:' || max_price);
bs_id:=bs_id+1;
end loop;
end;
注意:
1、必须要有跳出无线循环的条件(开关)
2、exit跳出语句后面必须要有分号。
3、if必须要用end if。
4、loop 必须要用end loop
5、注意条件要增加如上的 bs_id:=bs_id+1;
输出结果:
2、while循环
格式:
while 条件 满足条件执行逻辑。
示例:输出ID冲2开始,小于4的书籍信息。
原始表数据:
编写sql:
set serverout on;
declare bs_id number:=2;
b_price number;
book_Name varchar(20);
begin
while (bs_id) < 4 loop
select bookName,price into book_Name,b_price from t_book where id=bs_id;
dbms_output.put_line('ID=' || bs_id || '书名:' || book_Name || '价格:' || b_price);
bs_id:=bs_id+1;
end loop;
end;
注意:循环条件,不然会导致死循环
注意:while与loop的区别是,loop需要我们手动写exit;跳出循环语句,而while通过while条件来控制循环。
3、for循环
格式:
for 循环参数 in 循环值 loop
其它操作逻辑;
end loop;
代码示例:输出id从2到4的书籍信息。
set serverout on;
declare b_price number;
book_Name varchar(20);
begin
for bs_id in 2..4 loop
select bookName,price into book_Name,b_price from t_book where id=bs_id;
dbms_output.put_line('ID=' || bs_id || '书名:' || book_Name || '价格:' || b_price);
end loop;
end;
注意:for后面的参数值从多少到多少是2个.
输出结果:
评论 (0)