Bil*_*3rd 5 parameters stored-procedures varbinary sql-server-2008-r2
我有一些格式为 ASCII 十六进制的源数据。我需要将其放入 SQL 数据库的 VARBINARY 字段中。我已将问题减少到最低限度以说明我想做的事情。我有一个存储过程:
CREATE PROCEDURE BinaryDemo
@BinaryData varbinary(max)
AS
BEGIN
PRINT @BinaryData;
END
Run Code Online (Sandbox Code Playgroud)
我知道它“有效”,因为我可以这样做:
DECLARE @tmp varbinary(max);
SET @tmp = CONVERT(varbinary, '1234567890abcdef', 2);
EXEC BinaryDemo @BinaryData=@tmp;
Run Code Online (Sandbox Code Playgroud)
我想做的是跳过中间步骤并调用如下过程:
EXEC BinaryDemo @BinaryData=CONVERT(varbinary, '1234567890abcdef', 2);
Run Code Online (Sandbox Code Playgroud)
不幸的是,SQL 抱怨语法:关键字“CONVERT”附近的语法不正确。
我知道 CONVERT 是正确的,因为我可以:
PRINT CONVERT(varbinary, '1234567890abcdef', 2);
Run Code Online (Sandbox Code Playgroud)
我看到的正是我所期望的。由于源数据的性质和数量,第一个示例(声明/设置/执行)确实是一个糟糕的选择。
好问题。
但我不认为这是可能的。就像是 :
效果很好:
DECLARE @r DATETIME
SET @r=GETDATE()
EXEC [dbo].[sp_myDatePrinter] @d=@r
Run Code Online (Sandbox Code Playgroud)
坏的 :
DECLARE @r DATETIME
EXEC [dbo].[sp_myDatePrinter] @d=GETDATE();
Run Code Online (Sandbox Code Playgroud)