2

Я пытаюсь выполнить хранимую процедуру, как следующим образом:набор UniqueIdentifier в Java CallableStatement

CallableStatement cs = this.con.prepareCall("{call getDeliveryConfirmations(?)}"); 
cs.setString(1, "545A6F33-A22A-47A6-AF97-0D952F2D80D7"); 
Resultset rs = cs.executeQuery(); 

Как вы можете видеть, я устанавливаю Guid/UniqueIdentifier в отзывном заявлении в качестве параметра перед выполнением .. . Но, как вы можете также сделать из, что я использую метод «SetString» на объекте CallableStatement и в результате я получаю эту ошибку:

com.microsoft.sqlserver.jdbc.SQLServerException: Conversion failed when converting from a character string to uniqueidentifier.

Я бы себе представить, что если бы был способ, как 'setGuid' или что-то для объекта callablestatement, что у меня не будет этой проблемы ... Любой знаете об обходном пути и т. д.?

Edit:

код для хранимой процедуры '' getDeliveryConfirmations

USE [VodacomXml2Sms] 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
BEGIN 
SET NOCOUNT ON; 
select * from OutgoingDeliveryConfirmations 
where smsGuid = @selectedGuid 
END 
+0

Не могли бы вы также отправить код для 'getDeliveryConfirmations' (по крайней мере, декларацию)? –

+0

уверен, что просто gimme a sec ... :-) – Tiwaz89

+0

Там вы идете ... Очевидно, @selectedGuid - это параметр, который я отправляю в сохраненный proc в код Java – Tiwaz89

ответ

0

Я боюсь, если ваш Guid и UniqueIdentifier имеют тип данных или несоответствие размера.
Проверьте, работает ли для вас this.

+0

Что происходит, когда вы объявляете переменную, предназначенную для руководства например: declare (at) guidParameter varchar; вместо объявления (at) guidParameter nvarchar (36); ? Может ли это быть причиной ошибки? – Tiwaz89

+0

@DeanGrobler - я не уверен в этом, но можете ли вы проверить свой вызов с помощью 'cs.setNString (..)' –

Смежные вопросы