我有一个像这样的 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
并根据传递给函数的 col 找出函数中的列名。那可能吗?