其它控制語句
更新時間 2025-02-14 10:22:28
最近更新時間: 2025-02-14 10:22:28
分享文章
本頁介紹天翼云TeleDB數據庫PL/pgsql控制結構中的其他控制語句。
動態執行
teledb=# CREATE OR REPLACE FUNCTION f27(a_id INTEGER) RETURNS text AS
teledb-# $$
teledb$# DECLARE
teledb$# v_sql TEXT;
teledb$# v_mc TEXT;
teledb$# BEGIN
teledb$# v_sql := 'SELECT mc FROM t WHERE id='||a_id::TEXT;
teledb$# EXECUTE v_sql INTO v_mc;
teledb$# RETURN v_mc;
teledb$# END;
teledb$# $$
teledb-# LANGUAGE plpgsql;
CREATE FUNCTION
teledb=# SELECT f27(1);
f27
-------
teledb_pg
(1 row)動態執行就是拼SQL語句,然后使用EXECUTE命令執行。
執行一個沒有結果的命令
teledb=# CREATE OR REPLACE FUNCTION f27() RETURNS void AS
teledb-# $$
teledb$# BEGIN
teledb$# perform f27(1);
teledb$# END;
teledb$# $$
teledb-# LANGUAGE plpgsql;
CREATE FUNCTION
teledb=# SELECT f27();
f27
-----
(1 row)
teledb=# 獲取執行結果
teledb=# DROP FUNCTION f27(INTEGER);
DROP FUNCTION
teledb=# CREATE OR REPLACE FUNCTION f27(a_id INTEGER) RETURNS VOID AS
teledb-# $$
teledb$# DECLARE
teledb$# v_mc TEXT;
teledb$# BEGIN
teledb$# SELECT mc INTO v_mc FROM t WHERE id=a_id;
teledb$# IF FOUND THEN
teledb$# RAISE NOTICE '查詢到記錄,值為%',v_mc;
teledb$# ELSE
teledb$# RAISE NOTICE '查不到記錄' ;
teledb$# END IF;
teledb$# END;
teledb$# $$
teledb-# LANGUAGE plpgsql;
CREATE FUNCTION
teledb=# SELECT f27(1);
NOTICE: 查詢到記錄,值為Teledb
f27
-----
(1 row)
teledb=# SELECT f27(3);
NOTICE: 查不到記錄
f27
-----
(1 row)獲取影響行數
teledb=# CREATE OR REPLACE FUNCTION f27(a_id INTEGER) RETURNS VOID AS
teledb-# $$
teledb$# DECLARE
teledb$# v_mc TEXT;
teledb$# v_row_count BIGINT;
teledb$# BEGIN
teledb$# SELECT mc INTO v_mc FROM t WHERE id=a_id;
teledb$# GET DIAGNOSTICS v_row_count = ROW_COUNT;
teledb$# RAISE NOTICE '查詢到的記錄數為 % ',v_row_count;
teledb$# END;
teledb$# $$
teledb-# LANGUAGE plpgsql;
CREATE FUNCTION
teledb=# SELECT f27(1);
NOTICE: 查詢到的記錄數為 1
f27
-----
(1 row)
teledb=# SELECT f27(3);
NOTICE: 查詢到的記錄數為 0
f27
-----
(1 row)