使用 uniqueidentifier 输入参数执行存储过程时出错

Error executing stored procedure with uniqueidentifier input parameter

当我执行第一个输入参数类型为 uniqueidentifier 的存储过程时,它是 table 中的主键列,将值插入其中,它抛出以下错误。我找不到这个输入或存储过程有什么问题。

EXEC    @return_value = DbInsert
        @id =   EX642793-385D-604F-BE81-0000CD376836,
        @name= N'000001_067_0xed642993385d604fbe810000cd376836.tif',
        @image = 0x49492A00080000001300FE00040001000000020000000001040001000000C50900000101040001000000E90D0000020103000

SELECT  'Return Value' = @return_value

我的存储过程:

CREATE PROCEDURE DbInsert
    @id UNIQUEIDENTIFIER,
    @name VARCHAR(255),
    @image IMAGE
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO TbImage (Id, Name, Image )
    VALUES (@id, @name, @image)
END

错误:

Msg 102, Level 15, State 1, Line 7
Incorrect syntax near '-'.

更新

我试图右键单击存储过程并执行,它并没有要求我提供报价和所有内容,但我上面写的查询是它显示的错误。当我尝试引用时,它会抛出以下错误

Msg 8114, Level 16, State 1, Procedure DbInsert, Line 0 [Batch Start Line 2]
Error converting data type varchar to uniqueidentifier. (1 row(s) affected)

再次更新

通过自己更改一些数字来使用有效 Uniqueidentifier,但是将 X 替换为其他一些字符...仍然没有成功。

EM662993-385D-604F-BE81-0000CD376838

您的代码有 2 个问题:

  1. 您需要用单引号将唯一标识符例如'DE5AA552-0601-453C-AF21-9B285FA4E920'.

  2. A guid/uniqueidentifier 必须只包含有效的十六进制字符,而 X 不是有效的十六进制字符,因此在 uniqueidentifier 中无效,因此 'EX642793-385D-604F-BE81-0000CD376836' 是无效,但 'EA642793-385D-604F-BE81-0000CD376836' 有效。您可以使用 http://guid.us/Test/GUID 来验证和生成 guid。