示例代码下调的最基本的要素来证明问题:如何获得PL/pgSQL的一个动态生成的字段名的值
CREATE OR REPLACE FUNCTION mytest4() RETURNS TEXT AS $$
DECLARE
wc_row wc_files%ROWTYPE;
fieldName TEXT;
BEGIN
SELECT * INTO wc_row FROM wc_files WHERE "fileNumber" = 17117;
-- RETURN wc_row."fileTitle"; -- This works. I get the contents of the field.
fieldName := 'fileTitle';
-- RETURN format('wc_row.%I',fieldName); -- This returns 'wc_row."fileTitle"'
-- but I need the value of it instead.
RETURN EXECUTE format('wc_row.%I',fieldName); -- This gives a syntax error.
END;
$$ LANGUAGE plpgsql;
我怎样才能得到一个动态生成的字段名称中的价值这个情况?
正确的方法使用'EXECUTE'声明中这样的病例:'执行格式使用wc_row( '选择$ 1%I',字段名)到结果;'然后'返回结果;'(可变'结果'应宣布) – Abelisto
太棒了!我挣扎了好几个小时。谢谢!!! –