-5
         `DECLARE @MYACCOUNT CHAR(2),
         @REPORTTYPE CHAR(1),
         @BRANCHCODE CHAR(3)


         SELECT @MYACCOUNT='SV',
         @REPORTTYPE='D',
         @BRANCHCODE='001'

         IF NOT EXISTS(SELECT 1 FROM TBL_Category WHERE CategoryType=@MYACCOUNT)
         SELECT 'INVALID ACCOUNT NAME IS : '+@MYACCOUNT

         ELSE IF NOT EXISTS(SELECT 1 FROM TBL_Category WHERE CatGroup=@REPORTTYPE)
         SELECT 'INVALID REPORT NAME IS : '+@REPORTTYPE

         ELSE IF NOT EXISTS(SELECT 1 FROM BranchMaster WHERE MBranchCode=@BRANCHCODE)
         SELECT 'INVALID BRANCH CODE IS : '+@BRANCHCODE

         ELSE
           SELECT M.MBranchCode, SUM(M.MMiscBaln) FROM MasterTable M, TBL_Category T
           WHERE T.CategoryCode=M.MAcType
           AND T.CategoryType=@MYACCOUNT
           AND T.CatGroup=@REPORTTYPE
           AND M.MBranchCode=@BRANCHCODE
           GROUP BY M.MBranchCode`

変数に間違ったデータを入力すると、エラーメッセージがスローされるという解決策が必要です。複数のエラーがある可能性がありますが、それらの変数のエラーを表示する必要があります。例えば:

値を入力した場合:

                `@BRANCHCODE='002'
               @REPORTTYPE='A'
               @MYACCOUNT='SQ'`

@BRANCHCODE は正しいです。次に、@REPORTTYPE と @MYACCOUNT がエラーであるというメッセージをスローする必要があります。

4

1 に答える 1

2

エラー メッセージを収集します。何も返されない場合はクエリの結果が返されます。そうでない場合は、収集されたエラー メッセージが返されるか発生します。

Declare @a Table (a int,b int,c int)

insert into @a Values(1,2,3),(4,4,4)

Declare @va int=2
Declare @vb int=2
Declare @vc int=2

Declare @error Varchar(100)=''
if not exists(select * from @a where a=@va)
   Select @Error=@Error + 'Invalid va ' + Cast(@va as Varchar(10)) + Char(13)+Char(10)
if not exists(select * from @a where b=@vb)
   Select @Error=@Error + 'Invalid vb ' + Cast(@vb as Varchar(10)) + Char(13)+Char(10)
if not exists(select * from @a where c=@vc)
   Select @Error=@Error + 'Invalid vc ' + Cast(@vc as Varchar(10)) + Char(13)+Char(10)
if len(@Error)>0 select @Error
else
  Select * from @a where a=@va and b=@vb and c=@vc
于 2013-06-18T05:09:18.480 に答える