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