我正在尝试使用下面的示例中的变量来运行PSQL脚本而不声明函数并且必须调用它们。
DECLARE
result TEXT;
BEGIN
SELECT INTO result name
FROM test;
RAISE NOTICE result;
END;
表test
只有1行和列。这是否可能,而无需将此脚本包装在函数中。这将允许我通过say命令行更容易调用脚本。
谢谢你们。
答案 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 ...)