簡體   English   中英

Informix java.sql.SQLException:在查詢的任何表中找不到列(…)(或SLV未定義)

[英]Informix java.sql.SQLException: Column (…) not found in any table in the query (or SLV is undefined)

下面的查詢在基於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);

execute方法失敗,並且:

 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM