有没有像在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
作为@Clodoaldo评论 :PostgreSQL中使用临时表 。 为了您的例子:
CREATE TEMP TABLE product_totals (
product_id int
, revenue money
);
在手动有关更多信息CREATE TABLE
在这里你可以找到这句话:
如果指定,则该表作为临时表创建。 临时表在一个会话结束时自动删除,或任选地在当前事务结束时(见下面的ON COMMIT)。 而临时表存在具有相同名称的现有永久表不是当前会话中显示,除非它们是用模式修饰的名字引用。 在临时表上创建的索引都是自动临时的为好。
未记录的表是PostgreSQL 9.1的有些相关的功能。 他们通过不写,以节省磁盘写入WAL 。 这里是一个由罗伯特·哈斯的功能的讨论 。
除此之外,关于money
的数据类型:
你可以在你的复合类型的数组,而不是
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;
...