ich meine DB von TSQL zu PostgreSQL bewegen, ich bin ganz neu mit Postgres und ich fand nicht, wie ich in Postgres diese gespeicherte Prozedur auf eine Funktion umwandeln kannConvert complexe TSQL Verfahren Postgresql
Diese mein TSQL ist Stored Procedure (I so viel vereinfachen, wie ich kann)
Erwartete Rendite Liste der Zeilen mit 2 Spalten Typ (dezimal, varchar)
CREATE PROCEDURE dbo.procSelectOpenDocument(
@ItemType_id decimal(38)
)
AS
IF @ItemType_id = 1
BEGIN
SELECT d.ID, d.OrderNumber
FROM dbo.Table1 d
END
IF @ItemType_id = 2
BEGIN
SELECT d.ID, d.OrderNumber2
FROM dbo.Table2 d
END
Mein Problem?
, wenn Sie dies in TSQL Execute
execute dbo.procSelectOpenDocument(1)
Ergebnis
ID | OrderNumber
1 | Some String value
execute dbo.procSelectOpenDocument(2)
Ergebnis
ID | OrderNumber2
1 | Some String value
Wie Sie sehen können, in Abhängigkeit der Liste der Spaltennamensänderung des Parameters.
Aber das funktioniert nicht !!!!
CREATE OR REPLACE FUNCTION dbo.procSelectOpenDocument(IN p_ItemType_id bigint)
RETURNS TABLE
(
ID bigint
,Name varchar(150)
)
LANGUAGE 'plpgsql'
AS $function$
begin
if p_ItemType_id = 1 then
RETURN QUERY SELECT d.ID, d.OrderNumber FROM dbo.Table1 d;
end if;
if p_ItemType_id = 2 then
RETURN QUERY SELECT d.ID, d.OrderNumber2 FROM dbo.Table2 d;
end if;
end
$function$;
und Sie nicht die Spaltennamen ändern wollen wollen? – Magnus
Das ist in Postgres nicht (einfach) möglich. Die Anzahl und Namen aller Spalten müssen beim Parsen einer SQL-Anweisung bekannt sein. –
Ja Ich möchte Spalte Name ändern? –