嵌套在SQL中是否带有错误消息的逻辑

时间:2015-07-30 17:24:00

标签: tsql if-statement error-handling triggers local-variables

我有6个整数字段(分别称为genre1 ... genre6)。用户从前端的下拉菜单中输入选择。我想要发生的是消息显示他已经为字段1和2或1和3等选择了相同的值。

看起来像这样。

genre1 int,
genre2 int,
genre3 int,
genre4 int,
genre5 int,
genre6 int,

if genre1 = genre2
or genre1 = genre3
or genre1 = genre4
or genre1 = genre5
or genre1 = genre6
or genre2 = genre3
or genre2 = genre4
or genre2 = genre5
etc ... 

我不需要说明他输入错误的字段组合只是他已经这样做了,他应该在继续之前查看数据。

这必须发生在表格的触发器(插入和更新)中。还有其他逻辑在触发器内进行测试和评估,但最后我添加了以下逻辑以启动它似乎无法工作。

declare @genre1 int
set @genre1 = (select genre1 from lt_wmi_men_org_cs where   id_key = @id_key) 
-- select * from lt_wmi_men_org_cs

BEGIN TRY
        IF (@genre1 = 6) -- This is used to test a particular value. 
        BEGIN
            Select @genre1
        END
END TRY
BEGIN CATCH
   --  SELECT ERROR_MESSAGE() + @genre1 AS ErrorMessage;

    DECLARE @ErrorNumber INT = ERROR_NUMBER();
    DECLARE @ErrorLine INT = ERROR_LINE();
    DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE();
    DECLARE @ErrorSeverity INT = ERROR_SEVERITY();
    DECLARE @ErrorState INT = ERROR_STATE();

    PRINT ERROR_MESSAGE() + @genre1;
    PRINT 'Actual error number: ' + CAST(@ErrorNumber AS VARCHAR(10));
    PRINT 'Actual line number: ' + CAST(@ErrorLine AS VARCHAR(10));

END CATCH; 

我也尝试了一个更复杂的if语句,但似乎没有一个工作。

BEGIN TRY
        IF (@genre1 = @genre2 OR  @genre1 = @genre3 OR  @genre1 = @genre4 OR  @genre1 = @genre5 OR  @genre1 = @genre6 )
        BEGIN
            Select @genre1
        END
END TRY

请指教。
谢谢

0 个答案:

没有答案