在执行存储过程时出现错误,输入参数为uniqueidentifier。

问题描述 投票:1回答:1

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

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行受影响)

再次更新

使用有效的 Uniqueidentifier 通过自己改变一些数字,但是用其他字符代替了X...还是不行。

EM662993-385D-604F-BE81-0000CD376838
sql sql-server stored-procedures uniqueidentifier
1个回答
4
投票

你的代码有两个问题。

  1. 你需要单引号uniqueidentifiers,例如: 'DE5AA552-0601-453C-AF21-9B285FA4E920'.

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

© www.soinside.com 2019 - 2024. All rights reserved.