insert ..... returning <column> problem

Started by Michael Ivanovalmost 5 years ago6 messagesgeneral
Jump to latest
#1Michael Ivanov
ivans@logit-ag.de

Greetings!

I'm trying to insert a record returning column value using the following query:

INSERT INTO t_load (load_id, load_type) VALUES (:id, :typ) returning load_idx INTO :idx

But when I try to prepare the query I'm getting the following error:

PREPARE p1515544c00000001 AS insert into t_load (load_id, load_type) values ($1, $2) returning load_idx into $3]:
ERROR: syntax error at or near "into" LINE 1: ...ad_id, load_type) values ($1, $2) returning load_idx into $3
^
Why 'into var' is not accepted here?

Best regards,
--
\ / | |
(OvO) | Mikhail Iwanow |
(^^^) | Voice: +7 (911) 223-1300 |
\^/ | E-mail: ivans@logit-ag.de |
^ ^ | |

#2Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Michael Ivanov (#1)
Re: insert ..... returning <column> problem

On Thu, 2021-06-24 at 12:31 +0300, Michael Ivanov wrote:

I'm trying to insert a record returning column value using the following query:

INSERT INTO t_load (load_id, load_type) VALUES (:id, :typ) returning load_idx INTO :idx

But when I try to prepare the query I'm getting the following error:

PREPARE p1515544c00000001 AS insert into t_load (load_id, load_type) values ($1, $2) returning load_idx into $3]:
ERROR: syntax error at or near "into" LINE 1: ...ad_id, load_type) values ($1, $2) returning load_idx into $3
^
Why 'into var' is not accepted here?

Are you talking about ECPG?

Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com

#3Michael Ivanov
ivans@isle.spb.ru
In reply to: Laurenz Albe (#2)
Re: insert ..... returning <column> problem

Hallo, no.

I am using postgres c library, namely I'm calling PQexec()

Best regards,

On 24.06.2021 16:14, Laurenz Albe wrote:

On Thu, 2021-06-24 at 12:31 +0300, Michael Ivanov wrote:

I'm trying to insert a record returning column value using the following query:

INSERT INTO t_load (load_id, load_type) VALUES (:id, :typ) returning load_idx INTO :idx

But when I try to prepare the query I'm getting the following error:

PREPARE p1515544c00000001 AS insert into t_load (load_id, load_type) values ($1, $2) returning load_idx into $3]:
ERROR: syntax error at or near "into" LINE 1: ...ad_id, load_type) values ($1, $2) returning load_idx into $3
^
Why 'into var' is not accepted here?

Are you talking about ECPG?

Yours,
Laurenz Albe

--
\ / | |
(OvO) | Михаил Иванов |
(^^^) | |
\^/ | E-mail: ivans@isle.spb.ru |
^ ^ | |

#4Sándor Daku
daku.sandor@gmail.com
In reply to: Michael Ivanov (#3)
Re: insert ..... returning <column> problem

On Thu, 24 Jun 2021 at 15:25, Michael Ivanov <ivans@isle.spb.ru> wrote:

Hallo, no.

I am using postgres c library, namely I'm calling PQexec()

Best regards,

On 24.06.2021 16:14, Laurenz Albe wrote:

On Thu, 2021-06-24 at 12:31 +0300, Michael Ivanov wrote:

I'm trying to insert a record returning column value using the

following query:

INSERT INTO t_load (load_id, load_type) VALUES (:id, :typ) returning

load_idx INTO :idx

But when I try to prepare the query I'm getting the following error:

PREPARE p1515544c00000001 AS insert into t_load (load_id, load_type)

values ($1, $2) returning load_idx into $3]:

ERROR: syntax error at or near "into" LINE 1: ...ad_id,

load_type) values ($1, $2) returning load_idx into $3

^

Why 'into var' is not accepted here?

Are you talking about ECPG?

Yours,
Laurenz Albe

--
\ / | |
(OvO) | Михаил Иванов |
(^^^) | |
\^/ | E-mail: ivans@isle.spb.ru |
^ ^ | |

Hi,

Client libraries substitute the values(!) of the variables into the sql
queries (Or in this case do a PREPARE and provide the values to that), but
the final query must comply with Postgres syntax.
You can get the values defined in the returning clause from the result set,
like you would do in the case of a SELECT.

Regards,
Sándor

#5Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Michael Ivanov (#3)
Re: insert ..... returning <column> problem

On Thu, 2021-06-24 at 16:25 +0300, Michael Ivanov wrote:

I'm trying to insert a record returning column value using the following query:

INSERT INTO t_load (load_id, load_type) VALUES (:id, :typ) returning load_idx INTO :idx

But when I try to prepare the query I'm getting the following error:

PREPARE p1515544c00000001 AS insert into t_load (load_id, load_type) values ($1, $2) returning load_idx into $3]:
ERROR: syntax error at or near "into" LINE 1: ...ad_id, load_type) values ($1, $2) returning load_idx into $3
^
Why 'into var' is not accepted here?

Are you talking about ECPG?

I am using postgres c library, namely I'm calling PQexec()

Then you don't need it. You may be mixing up SQL syntax and PL/pgSQL syntax.

Just run the statement without the INTO, and it will return a result set, just
like a SELECT would.

By the way, you cannot have parameters with PQexec().
Use PQexecParams() for that.

Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com

#6Michael Ivanov
ivans@isle.spb.ru
In reply to: Laurenz Albe (#5)
Re: insert ..... returning <column> problem

I was just trying to use it similar to oracle handling in "returning COLUMN into :VAR"
So in postgres I should not explicitly specify destination variable for 'returning'
value in query itself, but rather retrieve the result from PGresult returned by PQexec().
ok, thanks for clarification!

On 24.06.2021 17:13, Laurenz Albe wrote:

On Thu, 2021-06-24 at 16:25 +0300, Michael Ivanov wrote:

I'm trying to insert a record returning column value using the following query:

INSERT INTO t_load (load_id, load_type) VALUES (:id, :typ) returning load_idx INTO :idx

But when I try to prepare the query I'm getting the following error:

PREPARE p1515544c00000001 AS insert into t_load (load_id, load_type) values ($1, $2) returning load_idx into $3]:
ERROR: syntax error at or near "into" LINE 1: ...ad_id, load_type) values ($1, $2) returning load_idx into $3
^
Why 'into var' is not accepted here?

Are you talking about ECPG?

I am using postgres c library, namely I'm calling PQexec()

Then you don't need it. You may be mixing up SQL syntax and PL/pgSQL syntax.

Just run the statement without the INTO, and it will return a result set, just
like a SELECT would.

By the way, you cannot have parameters with PQexec().
Use PQexecParams() for that.

Yours,
Laurenz Albe

--
\ / | |
(OvO) | Михаил Иванов |
(^^^) | |
\^/ | E-mail: ivans@isle.spb.ru |
^ ^ | |