【问题标题】:Passing VARBINARY to stored procedure将 VARBINARY 传递给存储过程
【发布时间】:2011-11-21 19:26:34
【问题描述】:

我有一些格式为 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”附近的语法不正确。

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

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

我看到了我所期望的。由于源数据的性质和数量,第一个示例(declare/set/exec)确实是一个糟糕的选择。

【问题讨论】:

标签: stored-procedures parameters sql-server-2008-r2 varbinary


【解决方案1】:

好问题。

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

效果很好:

  DECLARE @r DATETIME
    SET @r=GETDATE()

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

不好:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 2012-10-13
    • 2016-04-27
    • 2016-04-05
    相关资源
    最近更新 更多