OUT-Parameter, Composite Value und .*

Fragen und Probleme zu PL/pgSQL.
Antworten
wilmaed
Neuer Benutzer
Beiträge: 8
Registriert: Do 3. Nov 2016, 10:34

OUT-Parameter, Composite Value und .*

Beitrag von wilmaed » Do 3. Nov 2016, 11:18

Hallo,

Frage 1: erzeuge ich mit den OUT-Parameter eine Zelle bzw Spalte vom Datentyp Composite?

Frage 2: select ( foo() ).*; erzeugt aus einer Spalte (kommaseparierte Liste) mehrere Spalten (für jeden Listeneintrag eine Spalte)
Auf welcher Manual-Seite wird dieses .* erklärt?

Mein Script:

Code: Alles auswählen

CREATE or replace FUNCTION 	rechne	
	(
		IN wert1 decimal, 
		OUT wert2 decimal,
		OUT wert3 decimal
	)
	as
	 $$
			BEGIN
				wert2 = wert1 * 2;
				wert3 = wert1 * 3;
			END;
		$$
LANGUAGE plpgsql	 ;

Shell1:

Code: Alles auswählen

postgres=# select rechne(2);
 rechne
--------
 (4,6)

Shell2:

Code: Alles auswählen

postgres=#  select (rechne(2)).*;
 wert2 | wert3
-------+-------
     4 |     6

Danke

castorp
Erfahrener Benutzer
Beiträge: 1174
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: OUT-Parameter, Composite Value und .*

Beitrag von castorp » Do 3. Nov 2016, 12:09

wilmaed hat geschrieben:Frage 2: select ( foo() ).*; erzeugt aus einer Spalte (kommaseparierte Liste) mehrere Spalten (für jeden Listeneintrag eine Spalte)
Auf welcher Manual-Seite wird dieses .* erklärt?
Ich denke Du suchst das hier: https://www.postgresql.org/docs/current ... PARAMETERS was wiederum auf eine genauere Erklärung unter https://www.postgresql.org/docs/current ... PARAMETERS verweist.

Das ist im übrigen nicht wirklich eine Komma-separierte Liste, sondern in der Tat eine Spalte vom Typ "record".
Nur die Darstellung wird halt so gemacht.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

wilmaed
Neuer Benutzer
Beiträge: 8
Registriert: Do 3. Nov 2016, 10:34

Re: OUT-Parameter, Composite Value und .*

Beitrag von wilmaed » Do 3. Nov 2016, 12:14

Danke :)

Antworten