Почему я не могу передать в uniqueidentifier/GUID хранимой процедуре

У меня есть этот 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? даже, которые копируются прямо с базы данных и должны быть допустимыми как они, где позволено в дб.

10
задан chobo2 12 June 2010 в 18:50
поделиться

3 ответа

Два совета:

Мы рекомендуем не создавать любые хранимые процедуры, использующие sp_ в качестве приставка. SQL Server использует префикс sp_. для обозначения системных хранимых процедур. Выбранное вами имя может противоречить какая-то будущая системная процедура.

  • во-вторых: у меня нет проблем с вызовом вашей сохраненной процедуры следующим образом:

     EXEC proc_test 'B551F2C8-8380-491B-A51F-436E51CDD08F'
    

Как вы вызываете свою хранимую процедуру ?? Показать нам!

19
ответ дан 3 December 2019 в 17:19
поделиться

Я полагаю, вы копируете и вставляете строку. Можете ли вы объявить и использовать его таким образом?

CREATE PROCEDURE [dbo].[sp_test] 
    @guidstr varchar(37)
AS

DECLARE @guid uniqueidentifier 
SET @guid = CONVERT(uniqueidentifier, @guidstr)
...
-2
ответ дан 3 December 2019 в 17:19
поделиться

Сообщение

Неверный синтаксис рядом с 'cac671b'.

Должно означать, что он пытается проанализировать сам GUID. Попробуйте заключить его в одинарные кавычки.

6
ответ дан 3 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: