Müssen Drucken Postgresql-Datenbank-Konsole
Postgresql-Datenbank speichern-Prozedur insert-Abfrage und ich brauche drucken erhöhen
beachten Sie die Eingabe-Werte
CREATE OR REPLACE FUNCTION new(pk character varying, u character varying,ps character varying)
RETURNS SETOF record AS
$BODY$
BEGIN
RAISE NOTICE 'PK is %','--'pk;
RAISE NOTICE 'Username is %','--'u;
RAISE NOTICE 'Password is %','--'ps;
EXECUTE 'INSERT INTO table_sp("pk_id","username","password")VALUES ('''||pk||''' ,'''||u||''','''||ps||''')' ;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION new(character varying, character varying,character varying)
OWNER TO postgres;
UserManualInputs:
select new('2','admin','admin');
Gab ich die manuelle Eingabe durch select new('2','admin','admin')
und ich brauche drucken in der PostgreSQL-Konsole zur Eingabe von Werten mit raise notice wie (RAISE NOTICE 'PK is %','--'pk)
Bitte geben Sie immer Ihre PostgreSQL-version Fragen.
InformationsquelleAutor Kannan | 2013-07-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Craig Ringer antwortete Sie, aber ich muss anfügen einer Mitteilung.
Verwendung von dynamischen SQL (EXECUTE-Anweisung) in deinem Beispiel ist sehr falsche Idee, schlecht Umsetzung zu.
Du neuere können code schreiben:
sorry für offtopic.
RAISE
als irrelevant Lärm für den Zweck der Frage und habe nicht bemerkt den Schrecken, der folgte. BTW, ich in der Regel verwendenEXECUTE format('insert into %I (%I) values ($1)', tablename, colname) USING value
; auf diese Weise lernen Sie die Verwendungformat
's smart Bezeichner, Formatierung und bekomme immer noch die Parametrisierung angeboten vonEXECUTE ... USING
.und hier ist warum Pavel macht ein guter Punkt: bobby-tables.com
ja, ein Beispiel des formats in meine Antwort ist unnatürlich - warped für den genannten Anwendungsfall. Funktion "format" ist exakt ausgelegt für die Verwendung von Ihnen beschrieben.
InformationsquelleAutor Pavel Stehule
Unter der Annahme, dass durch die "PostgreSQL-Konsole" meinst du
psql
, so stellen Sie sicher, dass SieSET client_min_messages = 'notice'
oder höher.Ihre syntax wahrscheinlich nicht tun, was Sie erwarten, aber. Nachweis über
DO
statt voller Funktionen, um die Dinge kurz und einfach:Vielleicht haben Sie gesucht:
?
Beachten Sie, dass diese Nachrichten werden auch protokolliert werden, um die PostgreSQL-system-log-Dateien, so sollten Sie nicht verraten Passwörter in solchen Nachrichten in einer Produktions-app.
BTW
new
ist eine wirklich schlechte Namenswahl für eine Funktion; ich schlage vor, etwas, das nicht ein keyword in den meisten Sprachen einschließlich SQL.Natürlich. Ich bin nur der Demonstration der syntax von
RAISE NOTICE
; die gleiche Tätigkeit in Ihrer Funktion.DO
ist PL/PgSQL, wieCREATE OR REPLACE FUNCTION
.ok ich habe es, aber nicht drucken get-parameter durch front-end-Wert ERHÖHEN BEMERKEN.
Ich würde sehen müssen, den vollständigen code einschließlich schema-Definitionen usw. erforderlich, um es auszuführen, dann. Vielleicht klappt es auf sqlfiddle.com ? (SQLFiddle nicht Bemerkt, aber es ist ein guter Weg, um sicherzustellen, dass der code auf sich selbst beschränkt und abgeschlossen).
InformationsquelleAutor Craig Ringer