DO $$
DECLARE
rec RECORD;
outcome BOOLEAN;
rule TEXT;
BEGIN
-- Assume the record references a single row that contains the columns under test in the rule
rule := 'columnA > 30 OR columnB < 50';
END;
$$
LANGUAGE plpgsql;
这是一个简洁的块,其中包含我想根据记录评估的规则的示例。我想我需要EXECUTE
一个动态 SQL 语句。
我想在运行时动态确定记录的类型,因为我可以轻松访问带有表名称的另一个字符串。我设想铸造到table_name%ROWTYPE
. 据我所知,我无法在运行时将 RECORD 动态转换为复合类型。
然后我想到使用row_to_json(rec)
,但随后需要针对这个 JSON 对象评估规则。我不熟悉如何在 PL/pgSQL 中执行此操作。
我从 CURSOR 获取到 RECORD 中,因为我想要一个可以传递给没有临时表开销的不同函数的迭代器。我对 PL/pgSQL 相当陌生,我想说该语言只了解了几千个 LOC,所以我仍在学习如何使用它的控制结构。我正在考虑我可能需要备份一下并为问题选择不同的控制和/或数据结构。您将如何解决这个问题?