其它控制语句 本页介绍天翼云TeleDB数据库存储过程开发的其它控制语句。 动态执行 plaintext teledb CREATE OR REPLACE PROCEDURE pexecute() AS $$ DECLARE vsql TEXT; vrelname TEXT; BEGIN vsql : 'SELECT relname FROM pgclass limit 1'; EXECUTE vsql INTO vrelname; RAISE NOTICE 'relname %',vrelname; END; $$ LANGUAGE plpgsql; CREATE PROCEDURE teledb CALL pexecute(); NOTICE: relname pgstatstatements CALL teledb 也可以使用immediate。 plaintext teledb CREATE OR REPLACE PROCEDURE pexecute() AS $$ DECLARE vsql TEXT; vrelname TEXT; BEGIN vsql : 'SELECT relname FROM pgclass limit 1'; EXECUTE immediate vsql INTO vrelname; RAISE NOTICE 'relname %',vrelname; END; $$ LANGUAGE plpgsql; CREATE PROCEDURE teledb CALL pexecute(); NOTICE: relname s1 CALL teledb 动态执行就是拼SQL 语句,然后使用 EXECUTE 命令执行。 执行一个没有结果的命令 plaintext teledb CREATE OR REPLACE PROCEDURE pperform() AS $$ BEGIN perform md5(random()::text); END; $$ LANGUAGE plpgsql; CREATE PROCEDURE teledb call pperform(); CALL teledb 获取执行结果 plaintext teledb CREATE OR REPLACE PROCEDURE pfound() AS $$ DECLARE vrelname TEXT; BEGIN SELECT relname INTO vrelname FROM pgclass limit 1; IF FOUND THEN RAISE NOTICE '查询到记录,值为%',vrelname; ELSE RAISE NOTICE '查不到记录' ; END IF; END; $$ LANGUAGE plpgsql; CREATE PROCEDURE teledb CALL pfound(); NOTICE: 查询到记录,值为pgstatstatements CALL 获取影响行数 plaintext teledb CREATE OR REPLACE PROCEDURE prowcount() AS $$ DECLARE vrowcount BIGINT; BEGIN delete from t1; GET DIAGNOSTICS vrowcount ROWCOUNT; RAISE NOTICE '查询到的记录数为 % ',vrowcount; END; $$ LANGUAGE plpgsql; CREATE PROCEDURE teledb