Il problema con la mia chiamata di procedura memorizzata è che non sono sfuggito alle doppie citazioni. La sintassi richiede ancora le doppie citazioni per gestire correttamente il pacchetto e la barra in avanti. @Mark Rotteveel, eri vicino. Non riesco a sostituire le citazioni singole per doppie citazioni. Questo è ciò che ha funzionato: cn.prePareCall ("Call " _ sys_bic ". " Mypackaged/zmm_pr_materials_get "")
Errore di sintassi che chiama la procedura memorizzata HANA in HANA con JDBC
Domanda
Sto ricevendo un errore di sintassi che chiama una procedura memorizzata HANA. Nell'editor SQL in Hana Studio funziona, ma la sintassi deve essere diversa per la preparazione in Java. Penso che sia la barra in avanti dopo il nome del pacchetto, ma non sono sicuro di cosa fare al riguardo.
È perché ho creato la procedura memorizzata nella cartella del contenuto? Dovrebbe essere costruito da qualche altra parte?
Ecco la connessione e la chiamata. La connessione va bene
Class.forName("com.sap.db.jdbc.Driver");
String url = "jdbc:sap://10.9.9.139:30015/GL1";
String user = "userid";
String password = "password";
cn = java.sql.DriverManager.getConnection(url, user, password);
if (cn == null) {
System.out.println("failed");
}
cs = cn.prepareCall("call '_SYS_BIC'.'myPackaged/ZMM_PR_MATERIALS_GET'"); <---- THROWS EXCEPTION BELOW
rs = cs.executeQuery();
while(rs.next()) {
System.out.println(rs.getString(0));
}
} catch(Exception e) {
e.printStackTrace();
}
// this WORKS FINE... i get a connection and get some records.
// rs = cn.createStatement().executeQuery("SELECT * FROM MYSCHEMA.ORDERS");
// int i = 0;
// while (rs.next()) {
// System.out.println(String.format("rec %2d: %s=%2s", ++i, "ORDER_ID", rs.getString("ORDER_ID")));
// }
com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: [257]: sql syntax error: incorrect syntax near "_SYS_BIC": line 1 col 6 (at pos 6)
at com.sap.db.jdbc.exceptions.SQLExceptionSapDB.createException(SQLExceptionSapDB.java:334)
at com.sap.db.jdbc.exceptions.SQLExceptionSapDB.generateDatabaseException(SQLExceptionSapDB.java:174)
at com.sap.db.jdbc.packet.ReplyPacket.buildExceptionChain(ReplyPacket.java:104)
at com.sap.db.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:1106)
at com.sap.db.jdbc.CallableStatementSapDB.sendCommand(CallableStatementSapDB.java:1961)
at com.sap.db.jdbc.StatementSapDB.sendSQL(StatementSapDB.java:972)
at com.sap.db.jdbc.CallableStatementSapDB.doParse(CallableStatementSapDB.java:253)
at com.sap.db.jdbc.CallableStatementSapDB.constructor(CallableStatementSapDB.java:212)
at com.sap.db.jdbc.CallableStatementSapDB.<init>(CallableStatementSapDB.java:123)
at com.sap.db.jdbc.CallableStatementSapDBFinalize.<init>(CallableStatementSapDBFinalize.java:31)
at com.sap.db.jdbc.ConnectionSapDB.prepareCall(ConnectionSapDB.java:1295)
at com.sap.db.jdbc.trace.Connection.prepareCall(Connection.java:318)
at com.glazers.hana.utils.HanaStoredProcedure.execute(HanaStoredProcedure.java:54)
at com.glazers.hana.utils.HanaStoredProcedure.main(HanaStoredProcedure.java:20)
Soluzione
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow