it-swarm.com.de

Wie drucke ich in SQL auf einer Konsole?

Ich verwende PostgreSQL und möchte eine Nachricht an die Konsole drucken.

Wenn ich plpythonu benutze, benutze ich plpy.notice Wenn ich plpgsql benutze, benutze ich raise notice

aber wie drucke ich, wenn die Funktion rein ist SQL? mit SELECT 'string' hilft mir nicht, da es die Zeichenfolge in einer Spalte druckt und wenn sich die Nachricht in der Mitte des Codes befindet, wird sie nicht angezeigt. Ich möchte so etwas wie raise notice/plpy.notice für SQL.

CREATE OR REPLACE FUNCTION A()
  RETURNS VOID AS
$BODY$ 
                how do i print 'hello world' here?
 $BODY$
  LANGUAGE sql VOLATILE

wenn es ein plpgsql wäre, würde ich tun:

CREATE OR REPLACE FUNCTION A()
  RETURNS VOID AS
$BODY$ 
        Raise Notice 'hello world'
 $BODY$
  LANGUAGE plpgsql VOLATILE

Ich suche das Äquivalent in LANGUAGE SQL

7
aayushdagra

Mit psql können Sie \echo text (Oder \qecho, Wenn Sie \o Verwenden), z. B. mit psql -f Eine Datei mit Inhalten ausführen:

select 'Straight';
\echo BETWEEN
select 'the lines.';

ausgänge:

 ?column? 
----------
 Straight
(1 row)

BETWEEN
  ?column?  
------------
 the lines.
(1 row)
9
James Brown

Warum nicht einfach die Funktion plpgsql aufrufen, die innerhalb der SQL-Funktion einen Hinweis auslöst?

Laut dem Dokument:

SQL-Funktionen führen eine beliebige Liste von SQL-Anweisungen aus und geben das Ergebnis der letzten Abfrage in der Liste zurück

So kann am Anfang eine SELECT-Anweisung eingefügt werden, ohne das Ergebnis zu ändern.

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)
7
Daniel Vérité

Sie können Bash-Befehle von psql ausführen. Zum Beispiel:

\! echo "HERE YOUR DEBUG MSG!"
select * from your_table;
6
0x1337