oracle-存储过程-if_else

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;
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值