Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures 将VARBINARY传递给存储过程_Stored Procedures_Parameters_Sql Server 2008 R2_Varbinary - Fatal编程技术网

Stored procedures 将VARBINARY传递给存储过程

Stored procedures 将VARBINARY传递给存储过程,stored-procedures,parameters,sql-server-2008-r2,varbinary,Stored Procedures,Parameters,Sql Server 2008 R2,Varbinary,我有一些格式为ASCII十六进制的源数据。我需要将它放入VARBINARY字段中的SQL数据库中。为了说明我想做什么,我已经把这个问题降到最低限度。我有一个存储过程: CREATE PROCEDURE BinaryDemo @BinaryData varbinary(max) AS BEGIN PRINT @BinaryData; END 我知道它“有效”,因为我可以做到: DECLARE @tmp varbinary(max); SET @tmp = CONVERT(varb

我有一些格式为ASCII十六进制的源数据。我需要将它放入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”附近的语法不正确。

我知道转换是正确的,因为我可以:

PRINT CONVERT(varbinary, '1234567890abcdef', 2);
我完全明白我的期望。由于源数据的性质和数量,第一个示例(declare/set/exec)实际上是一个糟糕的选项。

问得好

但我认为这是不可能的。就像:

效果良好:

  DECLARE @r DATETIME
    SET @r=GETDATE()

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

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

您使用的是哪个版本的SQL Server?可能是@Martin Smith的副本:我没有看到那个问题(是的,我搜索过)。谢谢你指出这一点。