Обсуждение: 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?

От
"Dickson S. Guedes"
Дата:
2011/7/26 _石头 <tanjia76@qq.com>:
[... cut ...]
>           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!

(I'm supposing that you are talking about the syntax of 'CREATE
FUNCTION' itself and not about the bison entry in that file.)

See the docs [1] and this post [2]. They could help you.

[1] http://www.postgresql.org/docs/current/static/sql-createfunction.html
[2] http://www.postgresonline.com/journal/archives/201-returns-table.html

Best regards,
--
Dickson S. Guedes
mail/xmpp: guedes@guedesoft.net - skype: guediz
http://guedesoft.net - http://www.postgresql.org.br