2016-05-12 12 views
0

я получаю следующее сообщение об ошибке:Неявное преобразование из типа данных varchar в varbinary (max) недопустимо. Используйте CONVERT

"Implicit conversion from data type varchar to varbinary(max) is not allowed. Use the CONVERT function to run this query."

Примечание:

@transientCartData определяется как varbinary(max)

@savedCartData определяется как varbinary(max)

запрос:

exec [ecomm].[expiry_save_cart2_v1] 
@id=80094, 
@lastUpdated='2016-05-11 14:23:42.637', 
@transientCartExpiryIntervalInMin='45', 
@session_id='5C632166-D7D6-4F51-A87F-EED41376EEA7', 
@version='TEST_VERSION', 
@associated_slots='Null', 
@account_id='TEST_ACCOUNT_ID', 
@cookie='Null', 
@transientCartData= 'TEST_DATA', 
@savedCartData= 'TEST_DATA', 
@data2='NULL', 
@is_pricing_needed='1', 
@savedCartExpiryIntervalInDays='14', 
@persistentCartExpiryIntervalInDays='1', 
@cart_type='PERSISTENT', 
@customerAccountId=TEST_ACCOUNT_ID 

Тогда, когда я пытаюсь использовать @transientCartData = CONVERT(varbinary, 'TEST_DATA', 1), я получаю эту ошибку:

Incorrect syntax near the keyword 'CONVERT'.

+0

Exec [ECOMM] [expiry_save_cart2_v1] @ ID = 80094, @ LastUpdated = '2016-05-11 14:23:42.637' , @ transientCartExpiryIntervalInMin = '45' , @ session_id = '5C632166-D7D6-4F51-A87F-EED41376EEA7', @ версии = 'TEST_VERSION' @ 'Null', @ account_id = 'TEST_ACCOUNT_ID' associated_slots =, @ печенье = 'Null', @ transientCartData = 'TEST_DATA', @ savedCartData = 'TEST_DATA', @ data2 = 'NULL', @ is_pricing_needed = '1', @ savedCartExpiryIntervalInDays = '14' , @persistentCartExpiryIntervalInDays = '1', @ cart_type = 'PERSISTENT', @ customerAccountId = TEST_ACCOUNT_ID – sam

+0

Пожалуйста, разместите код в своем актуальном вопросе. –

+0

Эта ошибка довольно понятна. Можете ли вы рассказать нам о логике преобразования «VARCHAR» в двоичный BLOB? –

ответ

0

SQL-Server

SQL-сервер имеет следующий синтаксис для Convert.

CONVERT (data_type [ (length) ] , expression [ , style ])

Вы код не удается из-за стиль задается как .

If the data_type is a binary type, the expression must be a character expression. The expression must be composed of an even number of hexadecimal digits (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, a, b, c, d, e, f). ...

Вы должны установить его (по умолчанию).

Translates ASCII characters to binary bytes or binary bytes to ASCII characters...

Пример преобразования использование, которое производит 0x544553545F44415441

Declare @vb as varbinary(max) 
Set @vb = CONVERT(varbinary(max), 'TEST_DATA', 0) 
select @vb 

MySQL

Согласно documentation for Convert вашей подписи метода является неправильным.

CONVERT имеет следующий синтаксис MySQL:

CONVERT(expr,type), CONVERT(expr USING transcoding_name)


Вызов хранимой процедуры используется Call в MySQL.

CALL sp_name([parameter[,...]])

Примером использования является:.

mysql> SET @increment = 10; 
mysql> CALL p(@version, @increment); 
mysql> SELECT @version, @increment; 
+--------------+------------+ 
| @version  | @increment | 
+--------------+------------+ 
| 5.5.3-m3-log |   11 | 
+--------------+------------+ 
+0

все еще не работает :( – sam

+0

Попробуйте 'CONVERT ('TEST_DATA', двоичный (10))' само по себе – mikek3332002

+0

можно ли записать функцию концерта на exec, сохраненный запрос proc? Потому что я получаю неправильный синтаксис рядом с ключевым словом 'CONVERT Ниже приведен мой обновленный запрос exec [ecomm]. [expiry_save_cart2_v1] @ id = 80094, @ lastUpdated = '2016-05-11 14: 23: 42.637', @ transientCartExpiryIntervalInMin = '45 ', @ session_id =' 5C632166 -D7D6-4F51-A87F-EED41376EEA7' , @ версии = 'TEST_VERSION', @ associated_slots = 'Null', @ account_id = 'TEST_ACCOUNT_ID', @ печенье = 'Null', @ transientCartData = CONVERT ('TEST_DATA ', двоичный код (10)), @ savedCartData = CONVERT (' TEST_DATA ', двоичный код (10)), @ data2 = 'NULL', – sam

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