0

データにエラーが発生した後、従業員がマネージャーの中に現れるかどうかを確認する手順を作成する必要があります。プロシージャを作成しましたが、nr に関連するエラーがあります (キーワード IF 付近の構文が正しくありません)。表示される理由と修正方法を教えてください。私は SQL Server を使用する初心者なので、どんな助けも歓迎します。

手順は次のとおりです。

CREATE PROCEDURE IsManager( @Id INT)
 as
    WITH Managers
    AS (
        SELECT id, id_manager 1 AS LEVELC
        FROM [DBO].[employees]
        WHERE id = @Id
        UNION ALL
        SELECT P.id, P.id_manager H.LEVELC+1
        FROM  [DBO].[employees] E
        inner join Ancestors H
            ON E.id=H.id_manager
   )    
    SELECT COUNT(*) AS nr FROM (SELECT * FROM Managers where Managers.id=@Id
    IF nr=0
    PRINT 'Error '
    ELSE
    PRINT 'Your database has no errors'
4

1 に答える 1

2

それを試してみてください

CREATE PROCEDURE IsManager( @Id INT)
 as
    declare @nr int

    WITH Managers(id, id_manager, levelc)
    AS (
        SELECT id, id_manager, 1 AS LEVELC
        FROM [DBO].[employees]
        WHERE id = @Id
        UNION ALL
        SELECT P.id, P.id_manager, H.LEVELC+1
        FROM  [DBO].[employees] E
        inner join Ancestors H
            ON E.id=H.id_manager
   )    

  SELECT @nr = COUNT(*) FROM Managers where Managers.id=@Id
  IF @nr=0
    PRINT 'Error '
  ELSE
    PRINT 'Your database has no errors'
于 2013-10-27T21:20:39.723 に答える