-2

パラメータに渡された特定の値に基づいて詳細を取得するためのストアドプロシージャを作成しました。これには、ストアドプロシージャによって実行されるSQLを切り替える必要があります。コードは次のとおりです。

USE [DFS]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[DAFS]
@EmailID Nvarchar(128),
@clientID int,
@userType Varchar(50),
@Success numeric output, 
@msg varchar(100) output  

AS

BEGIN
    if @userType='Normal User'
        IF EXISTS (SELECT 1 FROM dbo.Allcdn 
                    WHERE EmailID = @EmailID AND ClientID = @clientID) 
            begin
                set @Success=0
                set @msg='Carry on ....'
            end
        else
            begin
                set @Success=6  
                set @msg='Not allowed ...' 
            END
        end
    else
        Begin
            IF EXISTS (SELECT 1 FROM dbo.Alcon 
                        WHERE EmailID = @EmailID AND ClientID = @clientID) 
                BEGIN
                    set @Success=0
                    set @msg='Carry on...' 
                END 
            END
        End
    end
END

処理全体は、変数@userTypeに基づいています。ストアドプロシージャがコンパイルされない理由がわかりません。

4

1 に答える 1

4

ENDフォーマットはあなたの友達です。一見すると、 sが多すぎるようです-動作するデモを含むSQLFiddleを参照してください。

CREATE PROCEDURE [dbo].[DAFS]
  @EmailID Nvarchar(128),
  @clientID int,
  @userType Varchar(50),
  @Success numeric output, 
  @msg varchar(100) output  

AS
BEGIN
  if @userType='Normal User'
    IF EXISTS (SELECT 1 FROM dbo.Allcdn 
                WHERE EmailID = @EmailID AND ClientID = @clientID) 
      begin
        set @Success=0
        set @msg='Carry on ....'
      end
    else
      begin
        set @Success=6  
        set @msg='Not allowed ...' 
      END
  else
    Begin
      IF EXISTS (SELECT 1 FROM dbo.Alcon 
                    WHERE EmailID = @EmailID AND ClientID = @clientID)
        BEGIN
          set @Success=0
          set @msg='Carry on...' 
        END 
    END
end
于 2012-10-08T20:44:11.510 に答える