Microsoft Sql Serverでは、出力パラメータと選択結果の両方を使用してデータをクライアントに返すことができます。これはページングのようなユースケースに便利です。ここでは、総ページ数などの関連するメタデータと共にメインセットを返す必要があります。これまで私がPostgresで見てきたすべての例は、出力パラメータを介して、またはテーブル結果を介してデータを返します。私はそれが次のエラーで失敗したとして一緒の両方でプロシージャを作成することができません: ERROR:OUTとINOUT引数は表関数に許可されていないここPostgresql:Microsoft SQL Serverのように、ストアドプロシージャからテーブルデータと出力パラメータの両方を返す方法はありますか?
は、私が試したものです:
CREATE OR REPLACE FUNCTION fn_Test(out p_count int)
RETURNS TABLE (CustomerId int, CustomerName varchar(50))
LANGUAGE 'plpgsql'
AS $BODY$
BEGIN
INSERT INTO Customers(CustomerName, Address, Area, Phonenumber, Email, communicationpreference)
VALUES ('Julie Yellow', 'JY Ad', 'JY Ar', 'JV0987654', '[email protected]', 1);
SELECT COUNT(*) FROM CUSTOMERS INTO p_count;
SELECT CustomerId, CustomerName FROM Customers;
EXCEPTION WHEN OTHERS THEN
RAISE exception '% %', SQLERRM, SQLSTATE;
END;
$BODY$
一緒に行くことはできませんか? PostgreSQLには別の方法がありますか?