为什么我不能将uniqueidentifier/GUID传递给存储过程

cho*_*bo2 10 sql stored-procedures sql-server-2005

我有这个SP

USE [TestDB]
GO
/****** Object:  StoredProcedure [dbo].[sp_test]    Script Date: 06/12/2010 11:47:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[sp_test]  
    @id uniqueidentifier
AS
BEGIN

    select * from TestTbl where ProductId= @id

END
Run Code Online (Sandbox Code Playgroud)

然后我用ms sql 2005转到SP并单击执行.它出现了一个我在GUID中输入的框.我从我的测试数据库中直接复制并粘贴它.

我收到这个错误.

消息102,级别15,状态1,行5'cac671b'附近的语法不正确.

那么为什么我不能发送GUID?即使是从数据库中复制的,也必须是有效的,因为它们允许进入数据库.

mar*_*c_s 19

两个提示:

  • 首先,你打电话给你的存储过程sp_(something)-微软专门警告对抗

我们建议您不要使用sp_ 作为前缀创建任何存储过程.SQL Server使用sp_前缀来指定系统存储过程. 您选择的名称可能与某些未来的系统过程冲突.

如何叫你的存储过程?给我们看一看!


Mar*_*ith 6

消息

'cac671b'附近的语法不正确.

必须意味着它正在尝试解析GUID本身.尝试用单引号分隔它.