【问题标题】:Variable Declaration [closed]变量声明
【发布时间】:2013-06-18 02:56:39
【问题描述】:
         `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 是错误的消息。

【问题讨论】:

  • 关闭大写锁定,这很难阅读。
  • 谢谢。现在你会回答我的问题吗?
  • Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已随 ANSI-92 SQL 标准(超过 20 年前)
  • 不要使用ELSE。跟踪是否打印了任何错误,如果是,则跳过正文。

标签: sql sql-server sql-server-2008 tsql


【解决方案1】:

收集您的错误消息,如果没有返回查询结果,否则返回或引发收集的错误消息。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-04
    • 2012-06-15
    • 2014-11-09
    • 2021-12-16
    • 2021-01-15
    • 2014-02-12
    • 2015-05-13
    相关资源
    最近更新 更多