| From: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
|---|---|
| To: | Joe How <huijoehow(at)gmail(dot)com> |
| Cc: | pgsql-sql <pgsql-sql(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: How to fix Execute format error? |
| Date: | 2021-02-05 15:01:37 |
| Message-ID: | CAFj8pRDBOw3oqHeWYdLUc-Mx+mCbNStjxL64P0h8JVBESnaJPA@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-sql |
Hi
pá 5. 2. 2021 v 14:46 odesílatel Joe How <huijoehow(at)gmail(dot)com> napsal:
> Dear all,
>
> I have a query in Postgres like below:
>
> EXECUTE FORMAT(
> $$ SELECT * FROM %I.%I CROSS JOIN LATERAL json_to_record(%I::json) AS rs(%s); $$,
> 'public',
> 'vehicles',
> 'column_a',
> array_to_string(
> (SELECT ARRAY(SELECT DISTINCT col FROM vehicles CROSS JOIN LATERAL json_object_keys(column_a::json) AS t(col) ORDER BY col)), ' text , '
> ) || ' text'
> );
>
> I got an error message when I run it in pgadmin:
> ERROR: prepared statement "format" does not exist SQL state: 26000
>
> Any advice on how to fix it? Thanks
>
What you want to do?
If you want to run dynamic statement, then you should be in a PLpgSQL
environment. If you want to run a prepared statement, then you should use
PREPARE statement first.
Attention: Inside Postgres you can use two different EXECUTE statements -
inside SQL - EXECUTE runs prepared statement, and inside PLpgSQL - EXECUTE
runs dynamic query.
Regards
Pavel
>
> --
> Best Regards,
> Joe
>
>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Joe How | 2021-02-05 17:40:59 | Re: How to fix Execute format error? |
| Previous Message | Joe How | 2021-02-05 11:22:55 | How to fix Execute format error? |