我有这个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
然后我使用ms sql 2005转到SP并单击执行。它出现了一个我在GUID中输入的框。我直接从我的测试数据库中复制并粘贴了它。
我收到此错误。
Msg 102,Level 15,State 1,Line 5 'cac671b'附近的语法不正确。
那为什么我不能发送GUID?甚至是从数据库中复制的,并且必须在允许进入数据库的地方有效。
答案 0 :(得分:18)
两个提示:
sp_(something)
- Microsoft专门warns against that 我们建议您不要创建 使用 sp _ 作为的任何存储过程 字首。 SQL Server使用sp_前缀 指定系统存储过程。 您选择的名称可能会与之冲突 一些未来的系统程序。
其次:我可以像这样调用你的存储过程:
EXEC proc_test 'B551F2C8-8380-491B-A51F-436E51CDD08F'
你如何调用你的存储过程?给我们看一看!
答案 1 :(得分:6)
消息
'cac671b'附近的语法不正确。
必须表示它正在尝试解析GUID本身。尝试用单引号分隔它。
答案 2 :(得分:-2)
我想你正在复制并粘贴一个字符串。你可以像这样申报和使用吗?
CREATE PROCEDURE [dbo].[sp_test]
@guidstr varchar(37)
AS
DECLARE @guid uniqueidentifier
SET @guid = CONVERT(uniqueidentifier, @guidstr)
...