无法存储值在变量

问题描述:

DECLARE @systemUnitGuid UNIQUEIDENTIFIER = '00000000-0000-0000-0000-000000000000' 
DECLARE @adminID UNIQUEIDENTIFIER = '00000000-0000-0000-0000-000000000000' 

IF EXISTS(
     SELECT @systemUnitGuid = UR_UN_GUID_To 
     FROM Un_Unit 
     INNER JOIN UR_UnitRelation ON UR_UN_GUID_To = UN_GUID 
            AND UR_CLSID = '5514c560-12ec-11de-8c30-0800200c9a66' 
     WHERE UR_UN_GUID_From = '8dbc36fc-f2f1-4ed9-a5b0-025857436828') 
BEGIN 
    IF @guidId = @systemUnitGuid 
    BEGIN 
     SELECT UN_GUID 
     FROM Un_Unit 
     INNER JOIN UR_UnitRelation ON UR_UN_GUID_From = UN_GUID 
            AND UR_CLSID = '710b45c3-8a23-4cc3-a684-8eed6ddc1fb7' 
     WHERE UR_UN_GUID_To = @guidId 
    END 

我得到以下错误无法存储值在变量

消息102,级别15,状态1,行13
附近有语法错误 '='。

请建议

+0

您缺少'END'来完成外部块。不知道这是否会完全解决问题,但它会有所帮助。 –

+0

其中'@ guidId'被声明,它是什么类型? –

1)你需要声明@guidId可变

2)内的存在,你不能将值分配给变量。

3)尝试这样的:

DECLARE @systemUnitGuid UNIQUEIDENTIFIER='00000000-0000-0000-0000-000000000000' 
DECLARE @adminID UNIQUEIDENTIFIER='00000000-0000-0000-0000-000000000000' 
DECLARE @guidId UNIQUEIDENTIFIER='00000000-0000-0000-0000-000000000000' 

SET @systemUnitGuid = (
     SELECT UR_UN_GUID_To 
     FROM Un_Unit 
       INNER JOIN UR_UnitRelation 
        ON UR_UN_GUID_To = UN_GUID 
         AND UR_CLSID  = '5514c560-12ec-11de-8c30-0800200c9a66' 
     WHERE UR_UN_GUID_From   = '8dbc36fc-f2f1-4ed9-a5b0-025857436828' 
    ) 

IF (@systemUnitGuid = @guidId) 
BEGIN 
    SELECT UN_GUID 
    FROM Un_Unit 
      INNER JOIN UR_UnitRelation 
       ON UR_UN_GUID_From = UN_GUID 
        AND UR_CLSID  = '710b45c3-8a23-4cc3-a684-8eed6ddc1fb7' 
    WHERE UR_UN_GUID_To    = @guidId 
END 

注: -如果@guid是输入参数,并且您使用此函数内部或存储过程,那么你可以删除的声明部分@ guid变量。

要设置一个变量的存在子句中,你不能做到这一点。 有关可能的解决方法,请参阅Assigning a variable inside an IF EXISTS clause