Обсуждение: How to use CreateFunctionStmt's RETURN TABLE?

Поиск
Список
Период
Сортировка

How to use CreateFunctionStmt's RETURN TABLE?

От
"_石头"
Дата:
Hello Guys,

       Lately, I saw this syntax in ./src/backend/parser/Gray.y as following!
  
      CreateFunctionStmt:
CREATE opt_or_replace FUNCTION func_name func_args_with_defaults
RETURNS func_return createfunc_opt_list opt_definition
{
CreateFunctionStmt *n = makeNode(CreateFunctionStmt);
n->replace = $2;
n->funcname = $4;
n->parameters = $5;
n->returnType = $7;
n->options = $8;
n->withClause = $9;
$$ = (Node *)n;
}
| CREATE opt_or_replace FUNCTION func_name func_args_with_defaults
 RETURNS TABLE '(' table_func_column_list ')' createfunc_opt_list opt_definition
{
CreateFunctionStmt *n = makeNode(CreateFunctionStmt);
n->replace = $2;
n->funcname = $4;
n->parameters = mergeTableFuncParameters($5, $9);
n->returnType = TableFuncTypeName($9);
n->returnType->location = @7;
n->options = $11;
n->withClause = $12;
$$ = (Node *)n;
}
| CREATE opt_or_replace FUNCTION func_name func_args_with_defaults
 createfunc_opt_list opt_definition
{
CreateFunctionStmt *n = makeNode(CreateFunctionStmt);
n->replace = $2;
n->funcname = $4;
n->parameters = $5;
n->returnType = NULL;
n->options = $6;
n->withClause = $7;
$$ = (Node *)n;
}
;

          I do not know how to use the second syntax:RETURNS TABLE '(' table_func_column_list ')' createfunc_opt_list opt_definition.

          May someone help me to write a simple example of this syntax!  Thank you very much. Looking forward for your help!

Re: How to use CreateFunctionStmt's RETURN TABLE?

От
Heikki Linnakangas
Дата:
On 26.07.2011 10:22, _ʯͷ wrote:
>            I do not know how to use the second syntax:RETURNS TABLE '(' table_func_column_list ')'
createfunc_opt_listopt_definition.
 

This is hardly a question related to PostgreSQL development, 
pgsql-general mailing list would've been more appropriate.

This is documented at:
http://www.postgresql.org/docs/9.0/static/sql-createfunction.html

There's an example using that syntax on that page.

--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com