27

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

4

2 に答える 2

36

PostgreSQLで一時テーブルを使用します。あなたの例のために:

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

についてのマニュアルCREATE TABLE

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

Postgres 9.1以降のログに記録されていないテーブルは、多少関連する機能です。WALに書き込まないことで、ディスク書き込みを節約します。RobertHaasによる機能の説明は次のとおりです。

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

于 2012-05-28T20:22:35.777 に答える
6

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

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;
   ...
于 2012-06-09T07:19:08.220 に答える