当我执行存储过程时,第一个输入参数的类型是 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
你的代码有两个问题。
你需要单引号uniqueidentifiers,例如: 'DE5AA552-0601-453C-AF21-9B285FA4E920'
.
一个guiduniqueidentifier必须只包含有效的十六进制字符,并且...。X
不是有效的十六进制字符,因此在uniqueidentifier中是无效的。'EX642793-385D-604F-BE81-0000CD376836'
无效,但 'EA642793-385D-604F-BE81-0000CD376836'
是。您可以使用 http:/guid.usTestGUID。 来验证和生成guid。