java - Informix java.sql.SQLException : Column (. ..) 在查询中的任何表中都找不到(或 SLV 未定义)

标签 java sql jdbc informix

下面的查询在我的基于 java 的 sql 编辑器中运行没有任何问题:

      begin work;
create SEQUENCE if not exists zahlpaketcounter start 1;
select zahlpaketcounter.nextval as counter,*
 from (
SELECT 
firma_nr
,zahlpaket.nummer
,zahlpaket.bezeichnung
,personenkonto.kontonummer
,personenkonto.bezeichnung
,zahlbewegung.op_nr
,zahlbewegung.zahlbetrag_druck
,fibu_beleg.archiv_nr
FROM integris.zahlbewegung
join zahlpaket on zahlbewegung.zahlpaket_id=zahlpaket.zahlpaket_id
join integris.personenkonto on zahlbewegung.personenkonto_id=personenkonto.personenkonto_id
join integris.opbewegung on  zahlbewegung.opbewegung_id=opbewegung.opbewegung_id
join integris.fibu_beleg on opbewegung.fibu_beleg_id=fibu_beleg.fibu_beleg_id
join integris.firma on zahlpaket.firma_id = firma.firma_id
where 1=1
and zahlbewegung.zahlbetrag_druck >=0
order by nummer,personenkonto.kontonummer,zahlbewegung.op_nr
);
drop sequence zahlpaketcounter;
commit work;

当我在其中使用java时:

        sql=getTextResource(this,"sql/getZahlläufe.sql");
        fibustmt.execute(sql);

执行方法失败并显示:

 java.sql.SQLException: Column (zahlpaketcounter) not found in any table in the query (or SLV is undefined).
为什么?有什么想法吗?

最佳答案

似乎不可能在execute() 中使用多个语句。您应该使用addBatch() 和executeBatch(),但不能与SELECT 一起使用。 它与 3 个execute() 配合使用。

String sqlQ="create SEQUENCE if not exists zahlpaketcounter start 1";
PreparedStatement pstmt = cnx.prepareStatement();
pstmt.execute();
sqlQ="SELECT ...";
pstmt = cnx.prepareStatement();
pstmt.execute();
sqlQ="drop SEQUENCE if exists zahlpaketcounter";
pstmt = cnx.prepareStatement();
pstmt.execute();

关于java - Informix java.sql.SQLException : Column (. ..) 在查询中的任何表中都找不到(或 SLV 未定义),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43256077/

相关文章:

java - 位编号 - 查找第一个集合 (ffs) 或查找第一个 (ffo) Java

java - 有效地找到随机序列的中值

java - 有没有办法清除JAVA中对象的所有字段?

mysql - 插入 SELECT WHERE col = col

php - 将 SQL 时间值传递给 Javascript?

java - 连接 JDBC MySQL 时出现异常

java - 对 JTextArea 使用撤消和重做

mysql - 如果字符串以指定字符开头或结尾,则替换字符串中的字符

mysql - 从远程计算机到 MySql 的 JDBC 连接

java - JDBC 通过 PreparedStatement 中的 executeBatch 调用保证原子操作