How to use CreateFunctionStmt's RETURN TABLE?

Started by _石头over 14 years ago2 messages
#1_石头
tanjia76@qq.com

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!

#2Dickson S. Guedes
listas@guedesoft.net
In reply to: _石头 (#1)
Re: How to use CreateFunctionStmt's RETURN TABLE?

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]http://www.postgresql.org/docs/current/static/sql-createfunction.html and this post [2]http://www.postgresonline.com/journal/archives/201-returns-table.html. 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