У меня есть хранимая процедура для SQl, и я верну строку в качестве вывода, как показано ниже
create PROCEDURE "PRATIK"."PRC_test3" (IN param1 INT,
param2 NVARCHAR(15),
OUT outParam1 VARCHAR (2000))
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
--DEFAULT SCHEMA <default_schema_name>
--READS SQL DATA AS
AS
BEGIN
----------- ### Exception Handler ### ------------------------
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
outParam1 := 'SQL Exception occured. Error Code is: ' || ::SQL_ERROR_CODE || ' Error message is: ' || ::SQL_ERROR_MESSAGE;
END;
outparam1 := ' Param2: ' || :param2 || '| param1: ' || :param1;
END;
, и для чтения ее ответа у меня есть следующий код Java
if (connection != null) {
try {
String Stm = "CALL \"PRATIK\".\"PRC_test3_2\"("+param1+",'"+param2+"',"+outparams1+")";
System.out.println("Connection to HANA successful!");
java.sql.Statement stmt = connection.createStatement();
java.sql.ResultSet resultSet = stmt.executeQuery(Stm);
resultSet.next();
String res1 = resultSet.getString(1);
System.out.println("This is the result of the query -- "+res1);
//System.out.println("METADATA -- "+resultSet.getMetaData());
} catch (SQLException e) {
System.err.println("Query failed!");
System.err.println(e.getStackTrace());
e.printStackTrace();
}
}
когда я выполняю этот код, он дает мне ошибку, что вывод не имеет тип resultSet.Ниже приведена трассировка стека.
Запрос не выполнен![Ljava.lang.StackTraceElement; @ 6504e3b2 com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: инструкция SQL не генерирует набор результатов.в com.sap.db.jdbc.exceptions.SQLExceptionSapDB._newInstance (SQLExceptionSapDB.java:197) в com.sap.db.jdbc.exceptions.SQLExceptionSapDB.newInstance (SQLExceptionSapDB.java.bb).StatementSapDB.
Есть ли способ чтения строки вывода из PL / SQl из Java без изменения процесса SQL для получения результата в формате возврата SQL, как показано ниже
SELECT
:param1 as "outParam1"
FROM Dummy;