尝试通过JDBC驱动程序运行PL / pgSQL时(postgresql-9.4.1211.jre7.jar;使用ANT)我收到以下错误:错误:语法错误在“$”或附近
有没有办法通过设置JDBC属性或更改PL / pgSQL的查询来解决这个问题?
查询:
DO $$
BEGIN
CREATE SEQUENCE id_sequence_SEQ OWNED BY id_sequence.id;
EXCEPTION WHEN duplicate_table
THEN
END
$$
LANGUAGE plpgsql;
错误:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "$"
Position: 5
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2458)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2158)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:291)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:432)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:358)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:305)
at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:291)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:269)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:265)
答案 0 :(得分:0)
我尝试用JDBC执行DO
语句,它运行正常。
你的陈述中必定有些奇怪的东西。通过将log_min_error_statement
和log_min_messages
设置为error
来尝试并记录该语句。执行该语句,然后查看PostgreSQL日志文件中的消息。它应该包含实际执行的语句。检查它是否有奇怪的字符和其他陌生感。
请注意,PL / pgSQL中存在语法错误:THEN
和END
之间必须存在某些内容。对于无操作,请使用语句NULL;
。