У меня есть хранимая процедура в SQL Server 2012, которая содержит несколько параметров, включая параметры табличного типа, так как SQL Server 2012 не поддерживает параметры типа таблицы. Я написал еще одну сохраненную процедура путем установки значений по умолчанию для этого параметра типа таблицы и имеющими только VARCHAR в качестве параметра для новой процедурыХранимая процедура SQL Server 2012 не возвращает результат в JDBC
DECLARE @pTempTable TABLE(
region varchar(max),
country varchar(max),
username varchar(max),
firstname varchar(max),
lastname varchar(max),
accessform varchar(max),
accessmodule varchar(max),
adate varchar(max),
atime varchar(max)
)
BEGIN
DECLARE @pTestFromDate DATETIME = '2008/01/01', @pTestToDate DATETIME = '2014/12/31'
DECLARE @pCountryIds GuidsTableType
INSERT @pCountryIds VALUES(NULL)
DECLARE @pRegionIds GuidsTableType
INSERT @pRegionIds VALUES(NULL)
DECLARE @pUserId UNIQUEIDENTIFIER = NULL
DECLARE @pModuleId UNIQUEIDENTIFIER = NULL
insert into @pTempTable exec usp_rpt_UserAudit
@RoleName = @pRoleName
,@[email protected]
,@[email protected]
,@[email protected]
,@[email protected]
,@[email protected]
,@[email protected]
SELECT * from @pTempTable
END
GO
Я написал код Java для выполнения этой хранимой процедуры, я могу установить соединение, но выполнить() всегда возвращает false. Код java приведен ниже
String finalSql = "{ call usp_rpt_sprocexecution(?) } ";
CallableStatement cs = connection.prepareCall(finalSql);
cs.setString(1, "Super Administrator");
System.out.println(cs.execute());
int c=0;
while(!((cs.getMoreResults() == false) && (cs.getUpdateCount() <= 1))){
System.out.println(c++);
ResultSet rs = cs.getResultSet();
System.out.println(rs.getString(1));
}
Когда я выполняю эту же хранимую процедуру в Management Studio, она возвращает правильную таблицу результатов.
Попробуйте добавить 'SET NOCOUNT ON' к началу процедуры. Сообщения, такие как «1 строка (ы), затронутые», передаются обратно и, вероятно, интерпретируются как результирующие наборы. Это приведет к подавлению этих сообщений. – GarethD
Большое спасибо @GarethD, который отлично работает сейчас. –