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

mle*_*vit 4 postgresql variables psql

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

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

    RAISE NOTICE result;
END;
Run Code Online (Sandbox Code Playgroud)

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

多谢你们.

mu *_*ort 10

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

DO 执行匿名代码块,或者换言之,以过程语言执行临时匿名函数.

像这样的东西:

do $$
    declare result text;
    begin
        select name into result from test;
        raise notice '%', result;
    end;
$$;
Run Code Online (Sandbox Code Playgroud)

我也修好了你的raise notice.

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

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

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

result=$(echo 'select name from test;' | psql -t ...)
Run Code Online (Sandbox Code Playgroud)