4

ASCII 16 進数としてフォーマットされたソース データがあります。VARBINARY フィールドの SQL データベースに入れる必要があります。私がやりたいことを説明するために、問題を最小限に減らしました。私はストアドプロシージャを持っています:

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) は、ソース データの性質と量のため、実際には不適切なオプションです。

4

1 に答える 1