2011-11-21 162 views
4

我有一些格式爲ASCII十六進制的源數據。我需要將它放到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); 

,我看看到底是什麼我的期望。由於源數據的性質和數量,第一個示例(declare/set/exec)確實是一個糟糕的選項。

+0

**哪個版本的SQL Server **您使用的? –

+0

可能的重複[轉換整型和連接到varchar在TSQL](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] 

不好:

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