Получить возвращаемое значение (скалярное), а не таблицу результатов, из хранимой процедуры с использованием Java и Hibernate
Мне сложно получить возвращаемое значение (целое число) из хранимой процедуры с использованием Hibernate и Java.
Моя хранимая процедура выглядит следующим образом:
create proc dbo.CheckEquipmentAuthorization @ReplicaId int as declare @IDAuthType int select @IDAuthType = AuthorizationType.IDAuthorizationType from AuthorizationType inner join ReplicaAuthorization on ReplicaAuthorization.RefIDAuthorizationType = AuthorizationType.IDAuthorizationType inner join Replica_ReplicaAuthorization on Replica_ReplicaAuthorization.RefIDAuthorization = ReplicaAuthorization.IDAuthorization inner join Replica on Replica.IDReplica = Replica_ReplicaAuthorization.RefIDReplica where Replica.IDReplica = @ReplicaId and GETDATE() between ReplicaAuthorization.AuthBegin and ReplicaAuthorization.AuthEnd declare @AuthIntValue int set @AuthIntValue = 10 if (@IDAuthType is not null) begin select @AuthIntValue = AuthorizationType.IntValue from AuthorizationType where AuthorizationType.IDAuthorizationType = @IDAuthType end print @AuthIntValue return @AuthIntValue
Я пытаюсь получить возвращаемое значение, используя:
- Как правильно убрать возвращаемое значение из вызова в хранимую процедуру
- Получение возвращаемого значения из JDBC MSSQL
- Возвращаемое значение из команды SQL Server Insert с использованием c #
- Как проверить, завершила ли хранимая процедура все операции вставки / удаления / обновления?
- Когда SqlCommand закрывается при использовании в другой функции?
query = session.createSQLQuery( "exec CheckEquipmentAuthorization(:replicaId)") .setParameter("replicaId", replicaId);
Но, похоже, я могу получить таблицу результатов, используя это, и так как из моей процедуры не генерируется результирующая таблица, и я не хочу, чтобы она была, она терпит неудачу.
Есть ли способ получить это возвращаемое значение с помощью метода createSQLQuery ()?
Я использую Hibernate, Java и SQL Server. Хранимая процедура работает правильно (я протестировал ее с помощью SQL-клиента).
Спасибо.
- Сохраненная процедура Возвращаемое значение для сбоя SQL-заданий
- Как получить возвращаемое значение из моей хранимой процедуры?
- Вызов хранимой процедуры с возвращаемым значением
- Как получить выходное значение из хранимой процедуры через сквозной запрос DAO
- C # и SQL Server: получить результат из хранимой процедуры
- Возвращать идентификатор после вставки C # с помощью SQL Server
Кажется, это дубликат. Вы сопоставили скалярный возвращаемый тип хранимой процедуры? И вы переводите этот тип возврата?
В хранимой процедуре я заменил
return @AuthIntValue
с
select @AuthIntValue as RetVat
Способ, которым я вызываю хранимую процедуру и преобразовывать результат в объект, который я создал.
StoredProcResult o = (StoredProcResult)session.createSQLQuery("exec CheckEquipmentAuthorization :replicaId") .addScalar("retVal", Hibernate.INTEGER) .setParameter("replicaId", replicaId) .setResultTransformer(Transformers.aliasToBean(StoredProcResult.class)) .setCacheMode(CacheMode.GET) .uniqueResult(); int xpto = o.getRetVal();
Объект StoredProcResult:
public class StoredProcResult { public int retVal; public int getRetVal() { return retVal; } public void setRetVal(int retVal) { this.retVal = retVal; } }