Ich steige gerade in die Programmierung mit plpgsql ein, und scheitere schon bei dem Versuch ein simples raise notice hinzukriegen (für später zum Debuggen). Mein Rumpfprogramm (es heißt internal_calculation) lautet:
MitCode:DECLARE errornumber int4; BEGIN -- Initialize raise notice 'RRR'; errornumber := 0; return errornumber; END;
wird nur das Ergebnis von errornumber zurückgeliefert. Kein Raise notice, nichts. Doppelhäkchen " " und Doppelquotes '' '' bringen auch nichts. Was mache ich denn da falsch?Code:select internal_calculation();
Ferner wäre ich dankbar für Tips zum Lesen, um erstmal in die Sprache reinzukommen. Ich weiß natürlich, dass es eine Unmenge an Internet-Seiten gibt. Ich würde aber doch gerne erstmal in einem richtigen Buch lesen. Das Buch von ads (ein sehr schönes Buch!) ist mir hier nicht ausführlich genug.
Eremit
Reicht das als Erleuchtung?Code:test=*# set client_min_messages='notice'; SET test=*# create function raise_function () returns int as $$begin raise notice 'bin hier'; return 0; end; $$language plpgsql; CREATE FUNCTION test=*# select * from raise_function(); NOTICE: bin hier raise_function ---------------- 0 (1 row) test=*# set client_min_messages='error'; SET test=*# select * from raise_function(); raise_function ---------------- 0 (1 row)
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Erleuchtung ja, weil ich verstanden habe, dass ich in der pg_settings nachschauen muss:
Ich habe Deinen set-Befehl ausgeführt, und wie man sieht, ist setting = "notice". Das Ergebnis ist aber immer noch das Gleiche: weit und breit keine Notice zu sehen.Code:name,"setting","unit","category","short_desc","extra_desc","context","vartype","source","min_val","max_val" client_min_messages,"notice","\N","Reporting and Logging / When to Log","Sets the message levels that are sent to the client.","Valid values are DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, LOG, NOTICE, WARNING, and ERROR. Each level includes all the levels that follow it. The later the level, the fewer messages are sent.","user","string","default","\N","\N"
Eremit
Kann es nicht nachvollziehen, dieses hier funktioniert wie erwartet:
AndreasCode:test=# create function eremit() returns int as $$ DECLARE test$# errornumber int4; test$# BEGIN test$# -- Initialize test$# raise notice 'RRR'; test$# errornumber := 0; test$# return errornumber; test$# END; test$# test$# $$ language plpgsql; CREATE FUNCTION test=*# select * from eremit(); eremit -------- 0 (1 row) test=*# set client_min_messages='notice'; SET test=*# select * from eremit(); NOTICE: RRR eremit -------- 0 (1 row)
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Es ist meine Schuld... die Notice prallt an phpPgAdmin ab - und das habe ich natürlich oben nicht erwähnt, weil ich es für unwichtig hielt.
Auf der Kommandozeile kommt die Notice, phpPgAdmin verschluckt sie. Ich bleibe am Ball.
Eremit
Ich werde jetzt so vorgehen, dass ich meine function zum Debuggen mit Putty über die Kommandozeile aufrufe.
Noch irgendwelche Tips zum Einlesen?
Eremit
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen