lPL/SQL(ProceduralLanguage/SQL)
l一种过程化语言,通过增加编程语言的特点,实现对SQL的扩展
常使用declare,begin,end
--1) 循环插入15条数据
create table temp_table(
t_id number(6) not null
)
declare
v_num number :=1;
begin
loop
if v_num>15 then
exit;
end if;
insert into temp_table values (v_num);
v_num:=v_num+1;
end loop;
end;
---2)
使用CASE语句判断并输出当前是星期几
declare
v_day varchar2(5):='2';
v_result varchar2(50);
begin
case v_day
when '1' then v_result:='今天是星期一';
when '2' then v_result:='今天是星期二';
when '3' then v_result:='今天是星期三';
when '4' then v_result:='今天是星期四';
when '5' then v_result:='今天是星期五';
when '6' then v_result:='今天是星期六';
when '7' then v_result:='今天是星期日';
end case;
dbms_output.put_line(v_result);
end;
---3) 1)
创建用户表temp_emp
----编号:number类型
----姓名:varchar2(20) 类型
----年龄:number类型
-----2)
编写动态SQL语句,实现将编号为1001的用户名修改为“孙悟空”,然后显示修改后的信息
create table temp_emp(
t_no number not null,
t_name varchar2(20) not null,
t_age number not null
);
insert into temp_emp values (1001,'猪八戒',25);
insert into temp_emp values (1002,'唐僧',28);
select * from temp_emp;
declare
v_id number;
v_name varchar2(20);
v_age number;
v_str varchar2(200);
begin
v_str :='update temp_emp set t_name = :t1 where t_no = :t2 returning t_no,t_name,t_age into :t3,:t4,:t5';
execute immediate v_str using '孙悟空',1001 returning into v_id,v_name,v_age;
dbms_output.put_line('编号:'||v_id||' 姓名:'||v_name||' 年龄:'||v_age);
end;
---4)
进行数学出发运算时,当被除数为0时,给出异常提示
declare
v_number1 number:=10;
v_number2 number:=0;
v_exception exception;
v_result number;
begin
if v_number2=0 then
raise v_exception;
end if;
v_result :=v_number1/v_number2;
dbms_output.put_line('结果是:'||v_result);
exception
when v_exception then
dbms_output.put_line('0不能被整除。。。');
end;
DECLARE
plsql varchar2(200);
t_name varchar2(20):='John';
t_id integer:='1002';
BEGIN
plsql:='insert intotemp_tablevalues(:1,:2)';
EXECUTE IMMEDIATE plsqlusingt_id,t_name;
END;