--pl/sql匿名块
--匿名块(声明、执行体、异常处理)
declare
v_a integer;
v_b integer;
begin
v_a:=10;
v_b:=&请输入第二个数:;
dbms_output.put_line('商:'||v_a/v_b);
dbms_output.put_line('积:'||v_a*v_b);
dbms_output.put_line('和:'||(v_a+v_b));
end;
--if
if 条件 then
语句
end if;
--if else
if 条件 then
语句
else --注意这里没有then
语句
end if;
-- if elsif else语法 (注意 elsif 而不是elseif)
if 条件 then
语句
elsif 条件 then
语句
elsif 条件 then
语言
else
语句
end if;
--1、select mod(10,3) from dual;
--2、逻辑运算符
--而且 and
--或者 or
--取非 not
mod(year,400)=0
或者 (mod(year,4)=0 and mod(year,100)!=0 )
--3、输入一个年份,判断是不是闰年
declare
v_year integer;
begin
v_year:=&请输入一个年份:;
if mod(v_year,400)=0 or
mod(v_year,4)=0 and mod(v_year,100)!=0
then
dbms_output.put_line('是闰年!');
else
dbms_output.put_line('不是闰年!');
end if;
end;
--作业
--输入部门编号,按照下列加薪比例执行(用if-elsif实现)。
deptno raise(%)
10 5%
20 10%
30 15%
40 20%
--加薪比例以现有的sal为标准。
declare
no emp.deptno%type;
rais number;
begin
no:=(&请输入部门编号);
if no=10 then
rais:=1.05;
elsif no=20 then
rais:=1.1;
elsif no=30 then
rais:=1.15;
else
rais:=1.2;
end if;
update emp set sal=sal*rais where deptno=no;
end;
--1、接受2个数相除,并显示结果,如果除数为0,则显示错误提示。
--2、自己创建一张userinfo表,包含两个字段username,password,表中的记录信息取自emp表ename,empno字段,写一个PL/SQL程序,模拟登陆的过程,用户分别输入用户名和密码,对于登陆成功和失败分别给出提示信息.declare
m_id manageinfo.mid%type;
m_pass manageinfo.mpass%type;
m_count integer;
begin
m_id:='&m_id';
m_pass:='&m_pass';
select count(*)
into m_count
from manageinfo
where mid=m_id and mpass=m_pass;
if m_count!=0 then
dbms_output.put_line('登陆成功');
else
dbms_output.put_line('登陆失败');
end if;
end;
--3、用userinfo表,写一个PL/SQL程序,模拟注册的过程,用户分别输入用户名和密码,对于登陆成功和失败分别给出提示信息.
declare
m_id manageinfo.mid%type;
m_name manageinfo.mname%type;
m_pass manageinfo.mpass%type;
m_count integer;
begin
m_id:='&m_id';
m_name:='&m_name';
m_pass:='&m_pass';
insert into manageinfo values(m_id,m_name,m_pass);
select count(*) into m_count from manageinfo where mid=m_id and mpass=m_pass;
if m_count!=0 then
dbms_output.put_line('登陆成功');
else
dbms_output.put_line('登陆失败');
end if;
end;