无法在变量中存储值

时间:2015-11-20 06:58:12

标签: sql-server

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

我收到以下错误

  

Msg 102,Level 15,State 1,Line 13
  ' ='附近的语法不正确。

请建议

2 个答案:

答案 0 :(得分:0)

您在exists子句中设置变量,您不能这样做。 有关可能的解决方法,请参阅Assigning a variable inside an IF EXISTS clause

答案 1 :(得分:0)

1)您需要声明@guidId变量

2)您无法在EXISTS内为变量赋值。

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变量的声明部分。