web-dev-qa-db-ja.com

PostgreSQLテーブル変数

T-SQLのテーブル変数のようなものはありますか?
SQL Serverでは、次のようになります。

DECLARE @ProductTotals TABLE
(
  ProductID int,
  Revenue money
)

次に、手順で次のことができます。

INSERT INTO @ProductTotals (ProductID, Revenue)
  SELECT ProductID, SUM(UnitPrice * Quantity)
  FROM [Order Details]
  GROUP BY ProductID

そして、通常のテーブルのようにこの変数で操作します。

ここに説明があります: http://odetocode.com/Articles/365.aspx

19
Yavanosta

@ Clodoaldoがコメント :PostgreSQLで一時テーブルを使用します。あなたの例のために:

CREATE TEMP TABLE product_totals (
   product_id int
 , revenue money
);

マニュアルの詳細情報 CREATE TABLE この引用を見つけることができます:

指定した場合、テーブルは一時テーブルとして作成されます。一時テーブルは、セッションの終わりに、またはオプションで現在のトランザクションの終わりに自動的に削除されます(下記のON COMMITを参照)。スキーマで修飾された名前で参照されない限り、一時テーブルが存在する間、同じ名前の既存の永続テーブルは現在のセッションに表示されません。一時テーブルに作成されたインデックスも自動的に一時的です。

ログに記録されていないテーブルは、PostgreSQL 9.1のやや関連する機能です。 [〜#〜] wal [〜#〜] に書き込まないことで、ディスクの書き込みを節約します。これが Robert Haasによる機能の議論 です。

さて、moneyデータ型に関して:

23

代わりに複合型の配列を使用できます

CREATE TABLE xx(a int, b int);

CREATE OR REPLACE FUNCTION bubu()
RETURNS void AS $$
DECLARE _x xx[];
BEGIN
   _x := ARRAY(SELECT xx FROM xx);
   RAISE NOTICE '_x=%', _x;
   ...
6
Pavel Stehule