2012-03-22 102 views
0

我想使用记录类型作为参数,但我得到消息,该函数不能有记录类型参数。我有一个Dao函数,它对Arraylist传递参数执行各种操作,我需要在存储过程中实现它。所以任何帮助将不胜感激。谢谢!如何使用记录作为存储功能的参数

CREATE OR REPLACE FUNCTION est_fn_get_emp_report(rec record,...) 

我使用PostgreSQL的但在此之前已经使用存储功能,但从来没有使用记录类型参数: 函数m寻找类似的。

+0

您好,您无法在PL/pgSQL中执行此操作。 PLpgSQL可以有复合类型参数,但参数不应该是多态的 - 它应该是声明类型或表类型。 – 2012-03-22 11:56:01

+0

谢谢先生,这是否意味着,如果我在我的数据库中创建一个'类型',并将其用作函数的参数将工作? – VPK 2012-03-27 06:50:57

+0

是的,plpgsql可以使用复合类型 – 2012-03-28 06:04:29

回答

1

简单的问题是你不能指定一条记录。您可以指定一些多态类型(ANYARRAY,ANYELEMENT)作为函数的输入,但它需要在计划时间有一个已知结构,这可能会导致多态类型的问题作为输入参数,即使在一个好的一天。记录的问题在于PostgreSQL在传入时不一定知道内部结构是什么。ROW(1, 'test')在功能上下文中没有用处。

而是要指定复杂类型。就依靠PostgreSQL而言,实际上可以采取这种方式。这允许您在传入时指定特定类型的记录。

相关问题