我正在使用PostgreSQL
而我想在控制台上打印一条消息。
如果我使用plpythonu
我使用plpy.notice
如果我使用plpgsql
,我会使用raise notice
但是当函数为纯SQL
时如何打印?
使用SELECT 'string'
并没有帮助我,因为它在列中打印字符串,如果消息位于代码的中间,则不会显示它。
对于raise notice
,我需要plpy.notice
/ SQL
之类的内容。
CREATE OR REPLACE FUNCTION A()
RETURNS VOID AS
$BODY$
how do i print 'hello world' here?
$BODY$
LANGUAGE sql VOLATILE
如果它是plpgsql
我会这样做:
CREATE OR REPLACE FUNCTION A()
RETURNS VOID AS
$BODY$
Raise Notice 'hello world'
$BODY$
LANGUAGE plpgsql VOLATILE
我正在寻找LANGUAGE SQL
答案 0 :(得分:3)
你只能在SQL中选择它
db=# CREATE FUNCTION b() RETURNS text AS
$BODY$
select 'Hello there'::text;
$BODY$
LANGUAGE sql VOLATILE;
CREATE FUNCTION
db=# select b()::text;
b
-------------
Hello there
(1 row)
答案 1 :(得分:2)
在纯SQL中有NOTIFY
命令。该命令将有效负载发送到通道。 频道和有效负载可以是任何字符串。
CREATE OR REPLACE FUNCTION A() RETURNS void AS $BODY$
NOTIFY msg, 'hello world';
$BODY$ LANGUAGE sql;
然后:
LISTEN msg;
SELECT A();
Asynchronous notification "msg" with payload "hello world" received from server process with PID 3275.
UNLISTEN msg;
该消息还将提供有关其来源的信息。如果你真的只想要字符串(有效负载),那么你必须从整个字符串中解析出来。