Hello,
I'm trying to use a prepared statement and I'm receiving a syntax error.
Here's a code snippet:
-----
dbHandle->prepare("selectTargetsStmt",
"select * from nac_targets where "
"execution_time >= (timestamp with time zone $1) and "
"execution_time < ((timestamp with time zone $2) + interval $3)")
("varchar", pqxx::prepare::treat_string)
("varchar", pqxx::prepare::treat_string)
("varchar", pqxx::prepare::treat_string);
pqxx::work trans(*dbHandle, "selectTargets");
pqxx::result res(trans.prepared("selectTargetsStmt")
("2007.001 UTC")("2007.001 UTC")("3 days").exec());
trans.commit();
-----
When I execute this, I get the following error:
-----
terminate called after throwing an instance of 'pqxx::syntax_error'
what(): ERROR: syntax error at or near "$1" at character 77
Abort trap
-----
I've tried variations of this, such as using ("timestamp",
pqxx::prepare::treat_string) for the SQL types for prepare(), but that
resulted in the same error.
Can anyone explain what I'm doing wrong here? If I construct the SQL manually
and call trans.exec(sqlString) it works fine; it's only the prepared statement
that's causing me trouble.
A separate question about prepared statements: can a $n arg be repeated in the
string, and will each instance of it be replaced? In my SQL above, I really
want $1 and $2 to be identical. I'd like the statement to accept two args,
and use one of them twice. I haven't been able to test this due to the
problem above.
Some system info:
Mac OSX 10.4.8/Darwin Kernel Version 8.8.0
PostgreSQL 8.1 (DarwinPorts build)
libpq 4.1 (Part of DarwinPorts PostgreSQL 8.1 build)
libpqxx 2.6.9
Thank you in advance for any help.
--Jim
_______________________________________________
Libpqxx-general mailing list
[email protected]
http://gborg.postgresql.org/mailman/listinfo/libpqxx-general