为什么以下准备语句的创建失败?

时间:2018-06-27 00:36:39

标签: postgresql prepared-statement

在psql和postgresql中,为什么以下准备语句的创建失败?谢谢。

mytestdb=# PREPARE fooplan (INT, VARCHAR(80)) AS
    CREATE TABLE foo (id INT, name VARCHAR(80));  PREPARE
ERROR:  syntax error at or near "CREATE"
LINE 2:     CREATE TABLE foo (id INT, name VARCHAR(80));

mytestdb=# PREPARE fooplan (INT, VARCHAR(80)) AS
    CREATE TABLE foo (id INT, name VARCHAR(80)); INSERT INTO foo VALUES($1, $2); PREPARE
ERROR:  syntax error at or near "CREATE"
LINE 2:     CREATE TABLE foo (id INT, name VARCHAR(80));
            ^
ERROR:  there is no parameter $1
LINE 1: INSERT INTO foo VALUES($1, $2);
                               ^

1 个答案:

答案 0 :(得分:0)

在准备好的语句中只能使用DML命令。 The manual:

  

任何SELECTINSERTUPDATEDELETEVALUES语句。

不允许使用DDL命令CREATE TABLE

只有一个语句。第二个示例中的INSERT不是准备好的语句的一部分,而是第二个独立的语句。