CASE语句¶
语法:
case ::=
参数:
expression PLOSCAR标量表达式
<statements> PLOSCAR语句列表
说明:
依次比较CASE和WHEN后表达式的值,如果相等则执行THEN后的statements,如果都不相等则执行ELSE后的statements。
示例:CASE语句¶
-- 清理环境
DROP FUNCTION author_province(varchar(32));
DROP TABLE authors CASCADE;
--创建表
-- create a table
create table authors
(
title varchar(32),
name varchar(32),
city varchar(32),
age integer
);
-- insert some rows
insert into authors values('engineer', 'zhangsan', 'hangzhou', 18);
insert into authors values('chief', 'lisi', 'shenzhen', 22);
insert into authors values('director', 'wanger', 'xiamen', 19);
insert into authors values('tester', 'zhaowu', 'chengdu', 20);
-- create a ploscar function using a case statement to access the table authors
create or replace function author_province(intitle varchar(32))
return varchar(32) as
DECLARE
_city varchar(32);
_province varchar(32);
BEGIN
select authors.city into _city from authors
where authors.title=intitle;
case _city
when cast('hangzhou' as varchar(32)) then
_province:='zhejiang';
when cast('shenzhen' as varchar(32)) then
_province:='guangdong';
when cast('xiamen' as varchar(32)) then
_province:='fujian';
else
_province:='other';
end case;
return _province;
END;
/
select author_province('engineer');
AUTHOR_PROVINCE(varchar) |
------------------------------
zhejiang |
总数目:1
--删除
DROP FUNCTION author_province(varchar(32));
DROP TABLE authors CASCADE;