为什么这段代码序列给我一个错误102

时间:2013-08-26 15:21:27

标签: sql sql-server-2008 tsql

任何人都知道为什么这会给我一个错误102,错误的语法?

declare @i int=20

while @i<=50
begin
    try
        if convert(char,getdate(),@i) is not null 
            begin
                select convert(char,getdate(),@i) 
            end
        set @i=@i+1
    end try
    begin catch
        set @i=@i+1
    end catch;
end

3 个答案:

答案 0 :(得分:2)

在结束捕获后删除半冒号,并在尝试之前添加begin。

这样的东西
declare @i int=20

while @i<=50
begin
    begin try
        if convert(char,getdate(),@i) is not null 
            begin
                select convert(char,getdate(),@i) 
            end
        set @i=@i+1
    end try
    begin catch
        set @i=@i+1
    end catch
end

SQL Fiddle DEMO

以下是corrected Syntax

BEGIN TRY
     { sql_statement | statement_block }
END TRY
BEGIN CATCH
     [ { sql_statement | statement_block } ]
END CATCH

答案 1 :(得分:2)

根据您的缩进判断,我相信您希望第5行BEGIN TRY

答案 2 :(得分:1)

begin try,而不只是try,因此begin之前的try将与try相关联。这意味着catch最终在while之外,与try分开,最后您最终会得到一个end个语句。

因此,只需将try更改为begin try