在未执行的条件内获取SQL语法错误

时间:2018-05-09 05:00:15

标签: sql sql-server-2014

我正在运行一个很长的SQL脚本,我在false条件下面临SET NOEXEC ON的问题。 流量不是内部条件,但仍然有问题 也尝试使用Scanner scannerObject= new Scanner(System.in) ; boolean answered = false; while(!answered) { System.out.println("Enter what maths to use:"); System.out.println("Enter 1 for addition"); System.out.println("Enter 2 for Subtraction"); System.out.println("Enter 3 for multiplication"); System.out.println("Enter 4 for Division"); n1=scannerObject.nextInt(); if(n1>4) { System.out.println("That is not an option. Please try again"); } else { answered = true; } } ,但仍然遇到问题。

1 个答案:

答案 0 :(得分:0)

错误是在解析时抛出,甚至在执行之前。如果存在解析/验证错误,则不会执行任何操作,因为SQL引擎认为代码被错误地写入。

IF OBJECT_ID('tempdb..#Example') IS NOT NULL
    DROP TABLE #Example

CREATE TABLE #Example (
    FirstColumn INT)
GO

IF 1 = 0 -- Always false
BEGIN

    SELECT
        C.NonExistantColumn
    FROM
        #Example AS C

END

--Msg 207, Level 16, State 1, Line 5
--Invalid column name 'NonExistantColumn'.

将批次发送到服务器时,需要确保所有引用列都存在。另一种方法是使用动态SQL执行语句(服务器在执行之前不会解析)。