我正在使用PostgreSQL
并且我想向控制台打印一条消息。
如果我用plpythonu
我用plpy.notice
如果我用plpgsql
我用raise notice
但是当函数是纯函数时如何打印SQL
?using 对SELECT 'string'
我没有帮助,因为它将字符串打印在一列中,如果消息位于代码中间,则不会显示它。我想要类似raise notice
/ plpy.notice
for 的东西SQL
。
CREATE OR REPLACE FUNCTION A()
RETURNS VOID AS
$BODY$
how do i print 'hello world' here?
$BODY$
LANGUAGE sql VOLATILE
Run Code Online (Sandbox Code Playgroud)
如果是 plpgsql 我会这样做:
CREATE OR REPLACE FUNCTION A()
RETURNS VOID AS
$BODY$
Raise Notice 'hello world'
$BODY$
LANGUAGE plpgsql VOLATILE
Run Code Online (Sandbox Code Playgroud)
我正在寻找等效的 LANGUAGE SQL
有了psql
你可以\echo text
(或者\qecho
如果使用\o
),例如与执行psql -f
与内容的文件:
select 'Straight';
\echo BETWEEN
select 'the lines.';
Run Code Online (Sandbox Code Playgroud)
输出:
?column?
----------
Straight
(1 row)
BETWEEN
?column?
------------
the lines.
(1 row)
Run Code Online (Sandbox Code Playgroud)
为什么不直接从 SQL 函数内部调用引发通知的 plpgsql 函数呢?
根据文档:
SQL 函数执行任意 SQL 语句列表,返回列表中最后一个查询的结果
因此可以在不改变结果的情况下在开头插入 SELECT 语句。
create function print(text) returns void as
$$ begin raise notice '%', $1; end
$$ language plpgsql;
create function whatever(int) returns int as $$
select print('foobar');
select $1;
$$ language sql;
select whatever(3);
NOTICE: foobar
CONTEXT: SQL function "whatever" statement 1
whatever
----------
3
(1 row)
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以从 psql 执行 bash 命令。例如:
\! echo "HERE YOUR DEBUG MSG!"
select * from your_table;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
59046 次 |
最近记录: |