CREATE OR REPLACE
PROCEDURE "if_else"
AS
-- 查询出 150号员工的工资,若其工资大于或等于10000则打印 'salary>=10000';
-- 若在5000 到 10000之间,则打印'5000<=salary<10000';否则打印'salary<5000'
/*
-- 关于这个IN OUT || OUT || IN 这种东西 如果是java程序注入进来的值需要定义在create里面
-- 非java程序注入进来的值,之间定义在begin上方即可,不需要declare。如果是sqlwindow窗口则需要这个
if<布尔表达式>then
pl/sql 和sql语句;
else
其他语句;
end if;
if<布尔表达式>then
pl/sql 和sql语句;
elseif<其他布尔表达式>then
其他语句;
elseif <其他布尔表达式>then
其他语句;
else
其他语句;
end if;
*/
v_sal EMPLOYEES.SALARY%type;
v_tempout VARCHAR2(20):= '';
BEGIN
select salary into v_sal from EMPLOYEES WHERE EMPLOYEE_ID = 150;
/*
方式1
if v_sal >= 10000 then
dbms_output.put_line('salary>=10000');
elsif v_sal < 10000 and v_sal>=5000 then
dbms_output.put_line('5000<=salary<10000');
else
dbms_output.put_line('salary<5000');
end if;
*/
/*
-- 方式2
if v_sal >= 10000 then
v_tempout := 'salary>=10000';
elsif v_sal < 10000 and v_sal>=5000 then
v_tempout := '5000<=salary<10000';
else
v_tempout := 'salary<5000';
end if;
dbms_output.put_line(v_tempout);
-- routine body goes here, e.g.
-- DBMS_OUTPUT.PUT_LINE('Navicat for Oracle');
*/
-- 方式 3
v_tempout:=
case trunc(v_sal/5000)
when 0 then
'salary<5000'
when 1 then
'salary>=10000'
else
'5000<=salary<10000'
end;
dbms_output.put_line(v_tempout||v_sal);
END;
CREATE OR REPLACE
PROCEDURE "if_else2" AS
/*
查询出122号员工的JOB_ID,若其值为'IT_PROG',则打印 'GRADE: A';
'AC_MGT',打印'GRADE B'
'AC_ACCOUNT',打印'GRATE C'
否则打印 'GRADE D'
*/
v_job_id EMPLOYEES.JOB_ID%type;
v_temp_grade VARCHAR2(10):='';
BEGIN
-- routine body goes here, e.g.
-- DBMS_OUTPUT.PUT_LINE('Navicat for Oracle');
select JOB_ID into v_job_id from EMPLOYEES WHERE EMPLOYEE_ID = 122;
v_temp_grade :=
case v_job_id
when 'IT_PROG' then
'GRADE: A'
when 'AC_MGT' then
'GRADE B'
when 'AC_ACCOUNT' then
'GRATE C'
else
'GRADE D'
end;
dbms_output.put_line(v_temp_grade||v_job_id);
END;
CREATE OR REPLACEPROCEDURE "if_else" AS -- 查询出 150号员工的工资,若其工资大于或等于10000则打印 'salary>=10000';-- 若在5000 到 10000之间,则打印'5000<=salary<10000';否则打印'salary<5000'/* -- 关于这个IN OUT || OUT || IN 这种东西 如果是java程序注入进来的值需要定义在create里面 -- 非java程序注入进来的值,之