Обсуждение: ECPG bug: PRAPARE FOR
Hello
I have code:
void main()
{
char *foo = "CALL "My_Proc"(?)";
EXEC SQL char *stmt = foo;
EXEC SQL PREPARE prep_stmt FROM :stmt;
EXEC SQL char *stmt2 = "CALL \x22OMy_Proc\x22(?)";
EXEC SQL PREPARE prep_stmt2 FROM :stmt2;
EXEC SQL PREPARE prep_stmt3 FROM "CALL "My_Proc"(?)";
}
{
char *foo = "CALL "My_Proc"(?)";
EXEC SQL char *stmt = foo;
EXEC SQL PREPARE prep_stmt FROM :stmt;
EXEC SQL char *stmt2 = "CALL \x22OMy_Proc\x22(?)";
EXEC SQL PREPARE prep_stmt2 FROM :stmt2;
EXEC SQL PREPARE prep_stmt3 FROM "CALL "My_Proc"(?)";
}
ecpg --version
ecpg (PostgreSQL) 13.0 (Ubuntu 13.0-1.pgdg20.04+1)
ecpg (PostgreSQL) 13.0 (Ubuntu 13.0-1.pgdg20.04+1)
ecpg sample.pgc -o sample.c
sample.pgc:10: ERROR: syntax error at or near "My_Proc"
On Tue, Oct 20, 2020 at 9:47 AM 1250kv <1250kv@gmail.com> wrote:
HelloI have code:void main()
{
char *foo = "CALL "My_Proc"(?)";
EXEC SQL char *stmt = foo;
EXEC SQL PREPARE prep_stmt FROM :stmt;
EXEC SQL char *stmt2 = "CALL \x22OMy_Proc\x22(?)";
EXEC SQL PREPARE prep_stmt2 FROM :stmt2;
EXEC SQL PREPARE prep_stmt3 FROM "CALL "My_Proc"(?)";
}ecpg --version
ecpg (PostgreSQL) 13.0 (Ubuntu 13.0-1.pgdg20.04+1)ecpg sample.pgc -o sample.csample.pgc:10: ERROR: syntax error at or near "My_Proc"
General usage questions regarding PostgreSQL and ECPG should be sent to the -general list.
I don't know the correct answer here but maybe using dollar quoting within the PostgreSQL SQL statement instead of double-quotes will help. Something like:
prepare prep_stat3 from "call $$My_Proc$$()";
Asking an actual question does help others to figure out where you are confused instead of just guessing.
David J.
I have also tried dollar quoting.
Unfortunately it fails at runtime:
Unfortunately it fails at runtime:
SQL error: syntax error at or near "$$My_Proc$$"
On Tue, Oct 20, 2020 at 8:00 PM David G. Johnston <david.g.johnston@gmail.com> wrote:
On Tue, Oct 20, 2020 at 9:47 AM 1250kv <1250kv@gmail.com> wrote:HelloI have code:void main()
{
char *foo = "CALL "My_Proc"(?)";
EXEC SQL char *stmt = foo;
EXEC SQL PREPARE prep_stmt FROM :stmt;
EXEC SQL char *stmt2 = "CALL \x22OMy_Proc\x22(?)";
EXEC SQL PREPARE prep_stmt2 FROM :stmt2;
EXEC SQL PREPARE prep_stmt3 FROM "CALL "My_Proc"(?)";
}ecpg --version
ecpg (PostgreSQL) 13.0 (Ubuntu 13.0-1.pgdg20.04+1)ecpg sample.pgc -o sample.csample.pgc:10: ERROR: syntax error at or near "My_Proc"General usage questions regarding PostgreSQL and ECPG should be sent to the -general list.I don't know the correct answer here but maybe using dollar quoting within the PostgreSQL SQL statement instead of double-quotes will help. Something like:prepare prep_stat3 from "call $$My_Proc$$()";Asking an actual question does help others to figure out where you are confused instead of just guessing.David J.