Обсуждение: Passing tokens to a function

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

Passing tokens to a function

От
Scott Bailey
Дата:
I'd like to make an XMLTABLE() function, probably in plpython (not C).
And I'd like to follow the SQL/XML standard. So a function call should
look something like this:

SELECT *
FROM XMLTABLE('//node'
   PASSING xmldoc
   COLUMNS id INT PATH '@id',
     name VARCHAR(30) PATH 'name')

Is this possible to pass in the tokens or do I need to abandon the
standard and just take parameters, probably something more like:

SELECT *
FROM XMLTABLE('//node', xmldoc,
array[xt_column('id', INT, '@id'), xt_column('name', VARCHAR(30), 'name')])

Re: Passing tokens to a function

От
Tom Lane
Дата:
Scott Bailey <artacus@comcast.net> writes:
> I'd like to make an XMLTABLE() function, probably in plpython (not C).
> And I'd like to follow the SQL/XML standard. So a function call should
> look something like this:

> SELECT *
> FROM XMLTABLE('//node'
>    PASSING xmldoc
>    COLUMNS id INT PATH '@id',
>      name VARCHAR(30) PATH 'name')

> Is this possible to pass in the tokens or do I need to abandon the
> standard and just take parameters,

The latter, unless you want to modify the parser (see gram.y).

The SQL committee's willingness to invent random syntax like this
is not one of their better habits :-(

            regards, tom lane