如何在SQL中打印到控制台?

时间:2015-07-07 05:36:11

标签: sql postgresql plpgsql

我正在使用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

中的等价物

2 个答案:

答案 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;

该消息还将提供有关其来源的信息。如果你真的只想要字符串(有效负载),那么你必须从整个字符串中解析出来。