eval for SQL

postgresならできます

CREATE FUNCTION eval(sql Text) RETURNS SETOF Record AS $$
    BEGIN
        RETURN QUERY EXECUTE sql;
        RETURN;
    END;
$$ LANGUAGE plpgsql;

使用例

SELECT * FROM eval('SELECT * FROM( VALUES (1,''a''), (3,''b'') ) AS t') AS (i Int, c Text);
DROP FUNCTION
CREATE FUNCTION
 i | c
---+---
 1 | a
 3 | b
(2 rows)

SQLをテーブルに入れているみなさんもこれで安心ですね

Comments