问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PL/SQL 和 Oracle的题求解

发布网友 发布时间:2022-04-24 04:18

我来回答

2个回答

懂视网 时间:2022-04-30 04:57

PL/SQL流程控制语句
介绍PL/SQL的流程控制语句, 包括如下三类:
控制语句: IF 语句
循环语句: LOOP语句, EXIT语句
顺序语句: GOTO语句, NULL语句
①if语句
 

IF <布尔表达式> THEN
PL/SQL 和SQL语句;
ELSIF< 其它布尔表达式> THEN
其它语句;
ELSIF< 其它布尔表达式> THEN
其它语句;
ELSE
其它语句;
END IF;

例:
 

declare
v_emp_name employees.last_name%type;
v_emp_sal employees.salary%type;
v_emp_sal_level varchar2(20);
begin
select last_name,salary into v_emp_name,v_emp_sal from employees where employee_id = 150;

if(v_emp_sal >= 10000) then v_emp_sal_level := ‘salary >= 10000‘;
elsif(v_emp_sal >= 5000) then v_emp_sal_level := ‘5000<= salary < 10000‘;
else v_emp_sal_level := ‘salary < 5000‘;
end if;

dbms_output.put_line(v_emp_name||‘,‘||v_emp_sal||‘,‘||v_emp_sal_level);
end;

② CASE 表达式
 

CASE selector
WHEN expression1 THEN result1
WHEN expression2 THEN result2
WHEN expressionN THEN resultN
[ ELSE resultN+1]
END;

例:
 

declare
v_sal employees.salary%type;
v_msg varchar2(50);
begin
select salary into v_sal
from employees
where employee_id = 150;

--case 不能向下面这样用
/*
case v_sal when salary >= 10000 then v_msg := ‘>=10000‘
when salary >= 5000 then v_msg := ‘5000<= salary < 10000‘
else v_msg := ‘salary < 5000‘
end;
*/

v_msg :=
case trunc(v_sal / 5000)
when 0 then ‘salary < 5000‘
when 1 then ‘5000<= salary < 10000‘
else ‘salary >= 10000‘
end;

dbms_output.put_line(v_sal ||‘,‘||v_msg);
end;

③循环
1. 简单循环
LOOP
要执行的语句;
 

EXIT WHEN<条件语句> ; /*条件满足,退出循环语句*/
END LOOP;

2. WHILE 循环(相较1,推荐使用2)

WHILE<布尔表达式> LOOP
要执行的语句;
END LOOP;


3.数字式循环

FOR循环计数器IN[REVERSE ] 下限.. 上限LOOP
要执行的语句;
END LOOP;


每循环一次,循环变量自动加1;使用关键字REVERSE,循环变量自动减1。
跟在IN REVERSE 后面的数字必须是从小到大的顺序,而且必须是整数,不能是变量或表达式。可以使用EXIT退出循环。

例:使用循环语句打印 1 - 100.(三种方式)

1). LOOP ... EXIT WHEN ... END LOOP
 

declare
--初始化条件
v_i number(3) := 1;
begin
loop
--循环体
dbms_output.put_line(v_i);
--循环条件
exit when v_i = 100;
--迭代条件
v_i := v_i + 1;
end loop;
end;

2). WHILE ... LOOP ... END LOOP
 

declare
--初始化条件
v_i number(3) := 1;
begin
--循环条件
while v_i <= 100 loop
--循环体
dbms_output.put_line(v_i);
--迭代条件
v_i := v_i + 1;
end loop;
end;

3).
 

begin
for i in 1 .. 100 loop
dbms_output.put_line(i);
end loop;
end;

例: 综合使用 if, while 语句, 打印 1 - 100 之间的所有素数
(素数: 有且仅用两个正约数的整数, 2, 3, 5, 7, 11, 13, ...).

declare
v_i int := 2;
v_j int := 2;
v_flag boolean := false;
begin
while v_i < 100 loop
v_j := 2;
while v_j<sqrt(v_i) loop
if mod(v_i,v_j) = 0 then
v_flag := true;
exit;
end if;
v_j := v_j + 1;
end loop;
if v_flag = false then
dbms_output.put_line(v_i||‘,是素数‘);
end if;
v_flag := false;
v_i := v_i +1;
end loop;
end;

④标号和GOTO
PL/SQL中GOTO语句是无条件跳转到指定的标号去的意思。语法如下:
GOTO label;
. . . . . .
<<label>> /*标号是用<<>>括起来的标识符*/

例:打印1——100的自然数,当打印到50时,跳出循环,输出“打印结束”
(方法一)

begin
for i in 1..100 loop
dbms_output.put_line(i);
if(i = 50) then
goto label;
end if;
end loop;

<<label>>
dbms_output.put_line(‘打印结束‘);

end;

(方法二)
 

begin
for i in 1..100 loop
dbms_output.put_line(i);
if(i mod 50 = 0) then
dbms_output.put_line(‘打印结束‘);
exit;
end if;
end loop;
end;

PL/SQL流程控制语句

标签:

热心网友 时间:2022-04-30 02:05

呵呵,那些定义性的东东都忘记差不多啦
说说哪些代码的吧
10 应该选D
注释:decode(sign(-1),1,'a','b'),如果sign(-1)结果是1则输出a,否则输出b,而sign(-1)结果是-1
13 这个选AD吧
18 B (这两个答案不是很确定哦,嘻嘻)
20 ABCDE 全部都是,但是有的时候也会说常用的不包含null,看教程了吧,实际中,null也算是常用的约束
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
若cpu一秒执行n次运算需耗能5w,那执行2n次运算要耗能是大于小于还是等于... 大神们,N5G跟N5W哪里不一样? 刚出生的婴儿会感冒吗 刚出生宝宝感冒的症状 怀庄永佳福代理,什么品牌白酒好呢? 做白酒品牌代理,有怀庄永佳福牌子怎么样? 怀庄永佳福白酒喝得人多吗?代理怎么样? 为什么很多女性都把男闺密当作结婚对象? 关于电影“罗生门”的问题 实际利率法是指什么 ...还有就是Oracle PL/SQL程序设计,请给我一个下载地址,谢谢分享_百度... oracle pl/sql从入门到精通.pdf(丁士峰著),完整版 推荐几本oracle的PL/SQL编程方面的经典书籍? 最好是对存储过程,触发器... 在oracle中 PL/sql程序块必须包括哪几部分? oracle数据库创建一个PL/SQL函数 oracle 求PL/SQL经典入门书籍 PLSQL基础教程.pdf Oracle Database 11g PL/SQL程序设计 Oracle PL/SQL程序设计(第2版) 开通美股账户需要用到哪些资料? 美股应该怎么开户?需要我提供哪些资料? Windows time服务无法启动,时间不准确 苹果手机怎么取消云下载 苹果手机怎么才可以完全关闭所有数据不会上传到云端里? 苹果手机怎么注销云端帐户 厦门宏诚大发智能科技有限公司怎么样? 扬州宏诚智能科技有限公司怎么样? 我用的2010的ppt,怎么加入跨越整个PPT的背景音乐呢? QQ的缓存数据在哪里?我想查看原来的缓冲过的视频。 手机qq看过的视频缓存没保存在哪? 如何查看PL/SQL执行的历史 oracle 12c pl/sql程序设计终极指南 怎么样 oracle的存储过程是不是就是用plsql写的程序? oracle中如何创建函数,本人用的是pl/sql,初学者,最好能给出例子和详细... ORACLE数据库环境,pl/sql查询环境,怎么用SQL语句实现下面的要求.(回管... Oracle数据库中 编写一个PL/SQL代码块,用以接受用户输入的数字。将该... 关于鸡兔同笼的问题怎么做? 鸡兔同笼的问题有哪些? 鸡兔同笼知识点 关于“鸡兔同笼”的问题怎么解决?有什么规律?请举例说明! 关于鸡兔同笼的解决问题 有关鸡兔同笼的问题 关于鸡兔同笼的解决问题用方法 关于“鸡兔同笼”的问题( 问两个关于鸡兔同笼的问题 鸡兔同笼问题,带答案的 关于鸡兔同笼的问题,请大家帮我出几道。 在日常生活中还有哪些类似鸡兔同笼的问题? 关于鸡兔同笼问题 生活中有哪些关于鸡兔同笼的数学问题?