PSQL脚本中的变量,无需创建函数

时间:2012-08-08 04:17:36

标签: postgresql variables psql

我正在尝试使用下面的示例中的变量来运行PSQL脚本而不声明函数并且必须调用它们。

DECLARE
    result TEXT;
BEGIN
    SELECT INTO result name 
FROM test;

    RAISE NOTICE result;
END;

test只有1行和列。这是否可能,而无需将此脚本包装在函数中。这将允许我通过say命令行更容易调用脚本。

谢谢你们。

1 个答案:

答案 0 :(得分:10)

您可以使用DO创建并执行匿名函数:

  

DO执行匿名代码块,或者换句话说,使用过程语言执行临时匿名函数。

这样的事情:

do $$
    declare result text;
    begin
        select name into result from test;
        raise notice '%', result;
    end;
$$;

我还修复了您的raise notice

如果您只想以最小格式(即易于解析)将表中的单个值转储到标准输出,那么--tuples-only可能会有所帮助:

  

-t
  --tuples-only
  关闭列名称和结果行计数页脚等的打印。这相当于\t命令。

所以你可以从shell中说出这样的话:

result=$(echo 'select name from test;' | psql -t ...)