4

ソースデータがASCII 16進数でフォーマットされています。私はそれをVARBINARYフィールドの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 @[email protected]; 

を私は何をしたいのですが、中間のステップをスキップして、のようなプロシージャを呼び出すです。

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

残念ながら、SQL構文は文句:キーワード 'CONVERT' 付近に不適切な構文を。

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

と私は期待して正確に何を参照してください。

私は私ができるので、CONVERTが正しいことを知っています。最初の例(declare/set/exec)はソースデータの性質と量のために実際には貧弱な選択肢です。

+0

どの**バージョン**あなたが使用しています? –

+0

可能性のある[TSQLの整数をキャストし、varcharに連結する]の複製(http://stackoverflow.com/questions/4936180/cast-integer-and-concatenate-to-varchar-in-tsql) –

+0

@marc_s:SQL 2008R2; – BillP3rd

答えて

1

良い質問。

しかし、私はそれが可能だと思います。そのような:

は良い作品:

DECLARE @r DATETIME 
    SET @r=GETDATE() 

    EXEC  [dbo].[sp_myDatePrinter] @[email protected] 

悪い:SQL Serverのの

DECLARE @r DATETIME 
    EXEC  [dbo].[sp_myDatePrinter] @d=GETDATE(); 
関連する問題