其他控制语句

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

以下几个示例,说明其他控制语句的类型以及使用方法。

执行一个没有结果的命令

postgres=# CREATE OR REPLACE FUNCTION f27() RETURNS void AS
postgres-# $$   
postgres$# BEGIN          
postgres$#     perform f27(1);
postgres$# END;
postgres$# $$
postgres-# LANGUAGE plpgsql;
CREATE FUNCTION
postgres=# SELECT f27();
 f27 
-----

(1 row)


获取执行结果

postgres=# DROP FUNCTION f27(INTEGER);
DROP FUNCTION
postgres=# CREATE OR REPLACE FUNCTION f27(a_id INTEGER) RETURNS VOID AS
postgres-# $$  
postgres$# DECLARE
postgres$#     v_mc TEXT; 
postgres$# BEGIN          
postgres$#     SELECT mc INTO v_mc FROM t WHERE id=a_id;
postgres$#     IF FOUND THEN
postgres$#         RAISE NOTICE '查询到记录,值为%',v_mc;        
postgres$#     ELSE
postgres$#         RAISE NOTICE '查不到记录' ;
postgres$#     END IF;
postgres$# END;
postgres$# $$
postgres-# LANGUAGE plpgsql;
CREATE FUNCTION
postgres=# SELECT f27(1);  
NOTICE:  查询到记录,值为TDSQLPG
 f27 
-----

(1 row)

postgres=# SELECT f27(3);   
NOTICE:  查不到记录
 f27 
-----

(1 row)

获取影响行数

postgres=# CREATE OR REPLACE FUNCTION f27(a_id INTEGER) RETURNS VOID AS
postgres-# $$  
postgres$# DECLARE
postgres$#     v_mc TEXT; 
postgres$#     v_row_count BIGINT;
postgres$# BEGIN          
postgres$#     SELECT mc INTO v_mc FROM t WHERE id=a_id;
postgres$#     GET DIAGNOSTICS v_row_count = ROW_COUNT;
postgres$#     RAISE NOTICE '查询到的记录数为 % ',v_row_count;
postgres$# END;
postgres$# $$
postgres-# LANGUAGE plpgsql;
CREATE FUNCTION

postgres=# SELECT f27(1);
NOTICE:  查询到的记录数为 1 
 f27 
-----

(1 row)
postgres=# SELECT f27(3);
NOTICE:  查询到的记录数为 0 
 f27 
-----

(1 row)