From: | Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at> |
---|---|
To: | "Madhurima Das *EXTERN*" <madhurima(dot)das(at)gmail(dot)com>, "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: conditional IF statements in postgresql |
Date: | 2014-07-07 10:48:31 |
Message-ID: | A737B7A37273E048B164557ADEF4A58B17D18736@ntex2010i.host.magwien.gv.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Madhurima Das wrote:
> I am writing a C program to access a PostgreSQL database, where
> I add a column if it doesn't exists in the table
> or, update the column, if the column already exits.
> Please suggest how to work with the conditional statements.
> N.B. I wrote the following:
>
> res = PQexec(conn, "IF COL_LENGTH('protein_sequence','comment') IS NULL");
> PQclear(res);
> if(res)
> {
> res = PQexec(conn, "ALTER TABLE protein_sequence ADD comment VARCHAR(500)");
> PQclear(res);
> }
> else
> {
> res = PQexec(conn, "UPDATE TABLE protein_sequence ADD comment VARCHAR(500)");
> PQclear(res);
> }
>
> Is the code logically correct??
No, that doesn't make any sense.
The statement sent with PQexec must be a legal SQL statement.
You could do it like this:
/* try the update */
res = PQexec(conn, "UPDATE protein_sequence SET comment = ... WHERE ...");
if (!res) {
/* out of memory, error out */
}
r = PQresultStatus(res);
PQclear(res);
if (r == PGRES_COMMAND_OK) {
return; /* UPDATE ok */
} else if (r != PGRES_NONFATAL_ERROR) {
/* unexpected result, error out */
}
/* add the column */
res = PQexec(conn, "ALTER TABLE protein_sequence ADD comment VARCHAR(500)");
if (!res) {
/* out of memory, error out */
}
r = PQresultStatus(res);
PQclear(res);
if (r == PGRES_COMMAND_OK) {
return; /* ALTER TABLE ok */
} else {
/* unexpected result, error out */
}
This code is untested.
Yours,
Laurenz Albe
From | Date | Subject | |
---|---|---|---|
Next Message | Pujol Mathieu | 2014-07-07 11:44:48 | Re: conditional IF statements in postgresql |
Previous Message | Andreas Joseph Krogh | 2014-07-07 09:28:34 | text-prefix search in 9.4's JSONB |