Обсуждение: SQL text of view

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

SQL text of view

От
"Yury Shvetsov"
Дата:
Hi.

Where is the SQL text of view stored in the database?
I mean the text like "SELECT the_field FROM the_table".
I can found the function's text in "pg_proc.proerc", but can't find the same
for a view.

Yury Shvetsov.


Re: SQL text of view

От
Mike Mascari
Дата:
Yury Shvetsov wrote:

> Hi.
>
> Where is the SQL text of view stored in the database?
> I mean the text like "SELECT the_field FROM the_table".
> I can found the function's text in "pg_proc.proerc", but can't find the same
> for a view.

You can use the function pg_get_viewdef() in 7.3 to get the text of
the view. If you start psql with the -E switch you can see the queries
it uses to render its output.

When you create a view, an ON SELECT rewrite rule is automatically
created and its parse tree is stored in pg_rewrite. pg_get_viewdef()
is ultimately executing:

SELECT *
FROM pg_catalog.pg_rewrite
WHERE ev_class = <your view's pg_class.oid> AND
rulename = '_RETURN';

and reverse-parsing the stored parse tree for you.

HTH,

Mike Mascari
mascarm@mascari.com



Re: SQL text of view

От
Thomas Kellerer
Дата:
Yury Shvetsov schrieb:
> Hi.
>
> Where is the SQL text of view stored in the database?
> I mean the text like "SELECT the_field FROM the_table".
> I can found the function's text in "pg_proc.proerc", but can't find the same
> for a view.
>
> Yury Shvetsov.
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
>                http://archives.postgresql.org
>
What about

SELECT definition
FROM pg_views
WHERE viewname = <name of view>

Thomas