Передача VARBINARY в хранимую процедуру - PullRequest
4 голосов
/ 21 ноября 2011

У меня есть некоторые исходные данные, отформатированные в шестнадцатеричном формате ASCII.Мне нужно получить его в базу данных SQL в полях VARBINARY.Я сократил проблему до минимума, чтобы проиллюстрировать, что я хотел бы сделать.У меня есть хранимая процедура:

CREATE PROCEDURE BinaryDemo
    @BinaryData varbinary(max)
AS
BEGIN
    PRINT @BinaryData;
END

Я знаю, что она "работает", потому что я могу сделать:

DECLARE @tmp varbinary(max);
SET @tmp = CONVERT(varbinary, '1234567890abcdef', 2);
EXEC BinaryDemo @BinaryData=@tmp;

Что я хотел бы сделать, это пропустить промежуточные шаги и вызватьпроцедура вроде:

EXEC BinaryDemo @BinaryData=CONVERT(varbinary, '1234567890abcdef', 2);

К сожалению, SQL жалуется на синтаксис: Неверный синтаксис рядом с ключевым словом «CONVERT».

Я знаю, что CONVERT верный, потому чтоЯ могу:

PRINT CONVERT(varbinary, '1234567890abcdef', 2);

и я вижу именно то, что ожидаю.Первый пример (Declare / Set / Exec) действительно плохой вариант из-за характера и количества исходных данных.

1 Ответ

1 голос
/ 21 ноября 2011

хороший вопрос.

но я не думаю, что это возможно. это как:

хорошо работает:

  DECLARE @r DATETIME
    SET @r=GETDATE()

    EXEC     [dbo].[sp_myDatePrinter] @d=@r

плохо:

DECLARE @r DATETIME
    EXEC     [dbo].[sp_myDatePrinter] @d=GETDATE();
...