ОБНОВЛЕНИЕ Выбор оператора с несколькими объединениями - PullRequest
0 голосов
/ 07 октября 2011

Я пытаюсь обновить данные в таблице Contacts_CSTM на основе данных в таблице Project_CSTM. Это запрос, который я использую, но я получаю сообщение об ошибке: «Ошибка преобразования при преобразовании строки символов в uniqueidentifier»

 ALTER PROCEDURE Insurance_Check_Expiration
  @ID_C AS NVARCHAR (55) = ID_C
  AS
 BEGIN      
 SET NOCOUNT ON
 IF EXISTS(SELECT * FROM CONTACTS_CSTM WHERE ID_C = @ID_c)

 Update contacts_cstm set insurance_expired_label_c = 'INSURANCE EXPIRED'
 WHERE DRIVERS_LICENSE_NUMBER_C IS NOT NULL AND @ID_C=
 (SELECT cc.id_c
 FROM PROJECT_CSTM PC 
 JOIN PROJECT P 
 ON P.ID = PC.ID_C
 JOIN PROJECT_RELATION PR
 ON PR.PROJECT_ID = P.ID  
 JOIN CONTACTS C
 ON C.ID = PR.RELATION_ID 
 JOIN CONTACTS_CSTM CC
 ON CC.ID_C = C.ID
 WHERE CC.ID_C = @ID_C AND INSURANCE_EXPIRED_C ='1') 

Спасибо.

1 Ответ

1 голос
/ 07 октября 2011

Например, вы устанавливаете значение @ID_C равным значению (ID_C), которое, очевидно, не является допустимым GUID.

Это функциональный эквивалент того, что вы сделали, запустите его, и выЯ получу ту же ошибку.

CREATE PROCEDURE Insurance_Check_Expiration
  @ID_C AS NVARCHAR (55) = ID_C
  AS
 BEGIN      
 DECLARE @A UNIQUEIDENTIFIER

 SET @A = @ID_C


 END

 exec Insurance_Check_Expiration

РЕДАКТИРОВАТЬ: Вот функциональный пример, основанный на комментариях ОП:

CREATE TABLE GUIDExample (ID_C UNIQUEIDENTIFIER)
GO
CREATE PROC GuidExample_Insert @ID_C UNIQUEIDENTIFIER
AS
BEGIN
    SELECT @ID_C
END
GO
CREATE TRIGGER GUID_Example ON GUIDExample
AFTER INSERT
AS
    DECLARE @ID_C UNIQUEIDENTIFIER

    SELECT @ID_C = ID_C
    FROM Inserted


    EXEC GuidExample_Insert @ID_C
GO

DECLARE @SampleGUID UNIQUEIDENTIFIER

SET @SampleGUID = NEWID()

INSERT GUIDExample (ID_C)
VALUES(@SampleGUID)
...