Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PostgreSQL函数临时表替代解决方案_C#_Postgresql_Create Table - Fatal编程技术网

C# PostgreSQL函数临时表替代解决方案

C# PostgreSQL函数临时表替代解决方案,c#,postgresql,create-table,C#,Postgresql,Create Table,这是我的功能,但我一直试图不使用临时表,而不是我需要的东西,我不必删除一个sesion 我试过使用RECORD,一种叫做refcursor的东西,但我只得到一行,我需要整个结果。知道我能用什么吗 我尝试在返回$1之后和之前添加DROP TABLE Temporal;但它不起作用。请检查这部分。不太清楚您想要实现什么,但我猜,您需要一个设置返回函数 我希望此代码可以满足您的需要: 创建或替换函数getArticulos 我是阿提库洛·伊达蒂库洛, 出文,名, 文外描述, 我的朋友们, 我们的家庭,

这是我的功能,但我一直试图不使用临时表,而不是我需要的东西,我不必删除一个sesion

我试过使用RECORD,一种叫做refcursor的东西,但我只得到一行,我需要整个结果。知道我能用什么吗


我尝试在返回$1之后和之前添加DROP TABLE Temporal;但它不起作用。

请检查这部分。不太清楚您想要实现什么,但我猜,您需要一个设置返回函数

我希望此代码可以满足您的需要:

创建或替换函数getArticulos 我是阿提库洛·伊达蒂库洛, 出文,名, 文外描述, 我的朋友们, 我们的家庭,名字, 出了Articulo.idTipo, 在提波,诺姆布雷, OUT int4,-我无法获取“Stock”列的源表 在明斯托克的演讲中, 明斯托克 返回一组记录 作为$BODY$ 开始 返回查询 以时间为单位 选择a.idArticulo、SUMStock作为库存 从ArticuloMarca作为am,Articulo作为 其中a.idArticulo=am.idArticulo a.idArticulo分组 由a.idArticulo订购 选择DISTINCTa.idArticulo、a.Nombre、a.description、a.idFamilia、f.Nombre作为Familia、a.idTipo、t.Nombre作为Tipo、tmp.Stock、a.MinStock、a.MaxStock 从Articulo作为a,ArticuloMarca作为am,Familia作为f,Tipo作为t,颞叶作为tmp 其中a.idFamilia=f.idFamilia,a.idTipo=t.idTipo,a.idArticulo=tmp.idArticulo a.idArticulo的命令; 终止 $BODY$ 语言plpgsql易失性成本100; 由于明显的原因,我无法测试此函数。
此外,考虑将语言更改为SQL,因为PLPGSQL开销没有理由执行此操作。 请检查这部分内容。不太清楚您想要实现什么,但我猜,您需要一个设置返回函数

我希望此代码可以满足您的需要:

创建或替换函数getArticulos 我是阿提库洛·伊达蒂库洛, 出文,名, 文外描述, 我的朋友们, 我们的家庭,名字, 出了Articulo.idTipo, 在提波,诺姆布雷, OUT int4,-我无法获取“Stock”列的源表 在明斯托克的演讲中, 明斯托克 返回一组记录 作为$BODY$ 开始 返回查询 以时间为单位 选择a.idArticulo、SUMStock作为库存 从ArticuloMarca作为am,Articulo作为 其中a.idArticulo=am.idArticulo a.idArticulo分组 由a.idArticulo订购 选择DISTINCTa.idArticulo、a.Nombre、a.description、a.idFamilia、f.Nombre作为Familia、a.idTipo、t.Nombre作为Tipo、tmp.Stock、a.MinStock、a.MaxStock 从Articulo作为a,ArticuloMarca作为am,Familia作为f,Tipo作为t,颞叶作为tmp 其中a.idFamilia=f.idFamilia,a.idTipo=t.idTipo,a.idArticulo=tmp.idArticulo a.idArticulo的命令; 终止 $BODY$ 语言plpgsql易失性成本100; 由于明显的原因,我无法测试此函数。
此外,考虑将语言更改为SQL,因为PLPGSQL开销没有理由执行此操作。 我认为您不需要创建临时表,甚至不需要为简单查询创建函数。更重要的是,如果您使用的是Postgresql 9.x,它提供了,您应该了解这一点。

我认为您不需要创建临时表,甚至不需要为简单查询创建函数。更重要的是,如果您使用的是Postgresql 9.x,它提供了

CREATE OR REPLACE FUNCTION "getArticulos"(refcursor)
RETURNS refcursor AS
$BODY$
BEGIN
    CREATE TEMP TABLE "Temporal" AS
    SELECT a."idArticulo", SUM("Stock") AS "Stock"
    FROM "ArticuloMarca" AS am, "Articulo" AS a
    WHERE a."idArticulo" = am."idArticulo"
    GROUP BY a."idArticulo"
    ORDER BY a."idArticulo";
    OPEN $1 FOR
        SELECT DISTINCT(a."idArticulo"), a."Nombre", a."Descripcion", a."idFamilia", f."Nombre" AS "Familia",a."idTipo", t."Nombre" AS "Tipo", tmp."Stock", a."MinStock", a."MaxStock"
        FROM "Articulo" AS a, "ArticuloMarca" AS am, "Familia" AS f, "Tipo" AS t, "Temporal" AS tmp
        WHERE a."idFamilia" = f."idFamilia" AND a."idTipo" = t."idTipo" AND a."idArticulo" = tmp."idArticulo"
        ORDER BY a."idArticulo";
    RETURN $1;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;