条件选择语句

最近更新时间: 2024-06-12 15:06:00

以下几个示例,说明条件选择语句的类型以及使用方法。

IF...THEN...END IF

postgres=# CREATE OR REPLACE FUNCTION f26() RETURNS VOID AS
postgres-# $$    
postgres$# BEGIN           
postgres$#     IF random()>0.5 THEN
postgres$#         RAISE NOTICE '随机数大于0.5';
postgres$#     END IF;
postgres$# END;
postgres$# $$
postgres-# LANGUAGE plpgsql;
CREATE FUNCTION
postgres=# select f26();
NOTICE:  随机数大于0.5
 f26 
-----

(1 row)

IF...THEN...ELSE...END IF

postgres=# CREATE OR REPLACE FUNCTION f26() RETURNS VOID AS
postgres-# $$    
postgres$# BEGIN           
postgres$#     IF random()>0.99 THEN
postgres$#         RAISE NOTICE '随机数大于0.99';
postgres$#     ELSE
postgres$#         RAISE NOTICE '随机数小于或等于0.99';
postgres$#     END IF;
postgres$# END;
postgres$# $$
postgres-# LANGUAGE plpgsql;
CREATE FUNCTION
postgres=# select f26();
NOTICE:  随机数小于或等于0.99
 f26 
-----

(1 row)

IF...THEN...ELSIF...THEN...ELSE...END IF

postgres=# CREATE OR REPLACE FUNCTION f26() RETURNS VOID AS
postgres-# $$    
postgres$# DECLARE
postgres$#     v_float8 float8 := random();
postgres$# BEGIN           
postgres$#     IF v_float8>0.99 THEN
postgres$#         RAISE NOTICE '随机数大于0.99';
postgres$#     ELSIF v_float8>0.5 THEN
postgres$#         RAISE NOTICE '随机数大于0.50';   
postgres$#     ELSIF v_float8>0.25 THEN
postgres$#         RAISE NOTICE '随机数大于0.25';       
postgres$#     ELSE
postgres$#         RAISE NOTICE '随机数小于或等于0.25';
postgres$#     END IF;
postgres$# END;
postgres$# $$
postgres-# LANGUAGE plpgsql;
CREATE FUNCTION
postgres=# SELECT f26();
NOTICE:  随机数大于0.50
 f26 
-----

(1 row)

CASE语句

postgres=# CREATE OR REPLACE FUNCTION f26() RETURNS VOID AS
postgres-# $$    
postgres$# DECLARE
postgres$#     v_float8 float8 := random();
postgres$# BEGIN           
postgres$#     CASE 
postgres$#     WHEN v_float8>0.99 THEN
postgres$#         RAISE NOTICE '随机数大于0.99';
postgres$#     WHEN v_float8>0.5 THEN
postgres$#         RAISE NOTICE '随机数大于0.50';   
postgres$#     WHEN v_float8>0.25 THEN
postgres$#         RAISE NOTICE '随机数大于0.25';       
postgres$#     ELSE
postgres$#         RAISE NOTICE '随机数小于或等于0.25';
postgres$#     END CASE;
postgres$# END;
postgres$# $$
postgres-# LANGUAGE plpgsql;
CREATE FUNCTION
postgres=# SELECT f26();
NOTICE:  随机数大于0.50
 f26 
-----

(1 row)