开发者

SQL Server Catch exception and continue

开发者 https://www.devze.com 2023-01-31 02:49 出处:网络
Ive follow procedure: alter procedure sp_开发者_开发问答insert_cities ( @txt_nome_cidade varchar(300),

Ive follow procedure:

alter procedure sp_开发者_开发问答insert_cities
(
    @txt_nome_cidade varchar(300),
    @txt_nome_estado varchar(150) = null,
    @txt_pais varchar(150) = null,
    @int_id_cidade int output
)
as
begin
            //Here an exception may occur
            insert into tb_cidades values(
            @txt_nome_cidade,
            @txt_nome_estado,
            @txt_pais)

            set @int_id_cidade = @@identity

            //Here i want to catch exception and continue executing the proc
            if(@@error <> 0)
            begin
            select @int_id_cidade = int_id_cidade 
            from tb_cidades 
            where 
            txt_nome_cidade = @txt_nome_cidade
            end

After if(@@error <> 0) line,i want to continue executing code even if there are any errors,but SQL throws an exception to my application and the code inside IF condition will not executed.

Any ideas?


BEGIN TRY 
       insert into tb_cidades values( 
            @txt_nome_cidade, 
            @txt_nome_estado, 
            @txt_pais) 

            set @int_id_cidade = @@identity 
END TRY

BEGIN CATCH
           select @int_id_cidade = int_id_cidade   
            from tb_cidades   
            where   
            txt_nome_cidade = @txt_nome_cidade  
END CATCH


The following will try to run your command. You can put anything you want to run in the CATCH block, which will execute only when an error occurs. The remaining code after the CATCH will run with error or without error.

BEGIN TRY
   insert into tb_cidades values(
   @txt_nome_cidade,
   @txt_nome_estado,
   @txt_pais)

       set @int_id_cidade = @@identity
END TRY

BEGIN CATCH
  PRINT 'Error occurred'

END CATCH

if(@@error <> 0)
begin
select @int_id_cidade = int_id_cidade 
from tb_cidades 
where 
txt_nome_cidade = @txt_nome_cidade
end
0

精彩评论

暂无评论...
验证码 换一张
取 消