У меня есть этот 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
Я затем перешел к SP с мс sql 2005 и нажал, выполняются. Это придумывает поле, где я вошел в GUID. Я скопировал и вставил его прямо от моей тестовой базы данных.
Я получаю эту ошибку.
Сообщение 102, Уровень 15, состояние 1, Строка 5 Неправильных синтаксисов рядом 'cac671b'.
Итак, почему не может, я отправил в GUID? даже, которые копируются прямо с базы данных и должны быть допустимыми как они, где позволено в дб.
Два совета:
sp_ (что-то)
- Microsoft специально предупреждает об этом. Мы рекомендуем не создавать любые хранимые процедуры, использующие sp_ в качестве приставка. SQL Server использует префикс sp_. для обозначения системных хранимых процедур. Выбранное вами имя может противоречить какая-то будущая системная процедура.
во-вторых: у меня нет проблем с вызовом вашей сохраненной процедуры следующим образом:
EXEC proc_test 'B551F2C8-8380-491B-A51F-436E51CDD08F'
Как вы вызываете свою хранимую процедуру ?? Показать нам!
Я полагаю, вы копируете и вставляете строку. Можете ли вы объявить и использовать его таким образом?
CREATE PROCEDURE [dbo].[sp_test]
@guidstr varchar(37)
AS
DECLARE @guid uniqueidentifier
SET @guid = CONVERT(uniqueidentifier, @guidstr)
...
Сообщение
Неверный синтаксис рядом с 'cac671b'.
Должно означать, что он пытается проанализировать сам GUID. Попробуйте заключить его в одинарные кавычки.