Yav*_*sta 19 sql postgresql plpgsql table-variable
在T-SQL中有什么类似表变量的吗?
在Sql Server中,它看起来像这样:
DECLARE @ProductTotals TABLE
(
ProductID int,
Revenue money
)
Run Code Online (Sandbox Code Playgroud)
然后在程序中我可以:
INSERT INTO @ProductTotals (ProductID, Revenue)
SELECT ProductID, SUM(UnitPrice * Quantity)
FROM [Order Details]
GROUP BY ProductID
Run Code Online (Sandbox Code Playgroud)
并像普通表一样操纵这个变量.
Erw*_*ter 23
正如@Clodoaldo评论的那样:在PostgreSQL中使用临时表.对于你的例子:
CREATE TEMP TABLE product_totals (
product_id int
, revenue money
);
Run Code Online (Sandbox Code Playgroud)
手册中有关CREATE TABLE您可以在何处找到此报价的更多信息:
如果指定,则将表创建为临时表.临时表在会话结束时自动删除,或者可选地在当前事务结束时删除(请参阅下面的ON COMMIT).当临时表存在时,当前会话不会显示具有相同名称的现有永久表,除非它们使用模式限定名称引用.在临时表上创建的任何索引也是自动临时的.
未记录的表是PostgreSQL 9.1的一个相关功能.他们通过不写入WAL来节省磁盘写入.以下是Robert Haas对这些功能的讨论.
另外,关于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;
...
Run Code Online (Sandbox Code Playgroud)