私はそのようなPL/pgsql関数を持っています
CREATE OR REPLACE FUNCTION foo(colname TEXT, col INT)
RETURNS REAL AS $$
BEGIN
IF (colname = 'a') THEN
RETURN (col * 1.5);
ELSIF (colname = 'b') THEN
RETURN (col * 2.5);
ELSIF (colname = 'c') THEN
RETURN (col * 3.5);
.. and so on ..
ELSE
RAISE EXCEPTION 'Invalid column!';
END IF;
RETURN NULL;
END;
$$
LANGUAGE plpgsql;
この機能により、次のようなことができます
SELECT foo('a', a) FROM table WHERE
できれば、これをより良くしたいと思います。列名を渡す必要はありません。つまり、できるようになりたい
SELECT foo(a) FROM table WHERE
関数に渡された列に基づいて、関数内の列名を見つけます。それは可能ですか?