Derby: SYSCS_UTIL.SYSCS_EXPORT_QUERY mit String Abfrage in wehre-Klausel nicht möglich

Henry_L

Mitglied
Wie bereits in der Überschrift zu lesen ist, kann ich in einem SYSCS_EXPORT_QUERY keine SQL-Statements angeben, welche in der where-Klausel auf varchar Felder gehen. Kann mir jemand einen Tipp geben was ich tun kann?

Geht:
Java:
String sql = "select * from Customer where ID=2";
String import = "CALL SYSCS_UTIL.SYSCS_EXPORT_QUERY('" + sql + "','c:\test.csv',';','\"','UTF16')";
PreparedStatement preparedStatement = con.prepareStatement(import);
preparedStatement.execute();

Geht nicht:
Java:
String sql = "select * from Customer where COUNTRY='DEU'";
String import = "CALL SYSCS_UTIL.SYSCS_EXPORT_QUERY('" + sql + "','c:\test.csv',';','\"','UTF16')";
PreparedStatement preparedStatement = con.prepareStatement(import);
preparedStatement.execute();

Er meckert hier das ' an. Lasse ich es weg, kommt die Meldung, dass DEU keine gültige Spalte wäre. Beide Meldungen sind logisch. Nur wie kann ich jetzt die Datei entsprechend der Bedingung ausgeben? Meine gewünschten Spalten als INT erstellen und den Inhalt mit einem Schlüssel füllen möchte ich eigentlich nicht.


Gibt es außerdem die Möglichkeit die Alphazeichen in der Ausgabedatei wegzulassen? Benutze ich null wird der Default-Wert ("=doppelte Hochkommas) genommen. '' wird nicht zugelassen (java.sql.SQLException: A delimiter is not valid or is used more than once.).
 
Zuletzt bearbeitet:
Versuch mal
select * from Customer where COUNTRY=''DEU''
Denn bei mir geht
SQL:
CALL SYSCS_UTIL.SYSCS_EXPORT_QUERY('select * from customer where COUNTRY=''DEU''','C:\test.csv',';',':','UTF16');
 
Danke. Hat funktioniert. :toll:

Jetzt nur noch herausfinden, wie ich den CHARACTERDELIMITER ausschalte. Hast Du hierzu vielleicht auch eine Idee?

Bei ' ' oder '' kommt folgende Exception:
Java:
java.sql.SQLException: A delimiter is not valid or is used more than once.

Bei null wird der Standard genommen: "
 
CHARACTERDELIMITER
An input argument of type CHAR(1) that specifies a character delimiter. The specified character is used in place of double quotation marks to enclose a character string.

Passing a NULL value will use the default value; the default value is a double quotation mark (").
 

Zurück
Oben