troubleshooting Question

Error in script to run in both mssql version 2014 and 2017

Avatar of Khan Consultoria
Khan ConsultoriaFlag for Brazil asked on
Microsoft SQL Server
2 Comments1 Solution63 ViewsLast Modified:
Hello guys,

I need help with my script.

I have a script that must be run in MSQL 2014 e MSSQ2017

The problem is the syntax of error, how to work around with this?

the error:

Msg 102, Level 15, State 1, Procedure td_ensespecialidades, Line 64
Sintaxe incorreta próxima a '@errno'.

if exists (select name from sysobjects where name = 'td_ensespecialidades') 
  drop trigger td_ensespecialidades;
go


exec('create trigger td_ensespecialidades on ensEspecialidades for delete as
begin
    declare
       @numrows  int,
       @errno    int,
       @errmsg   varchar(255)

    select  @numrows = @@rowcount
    if @numrows = 0
       return

    /*  DeleteParentRestrict: Impossivel excluir pai "ensEspecialidades" pois existem registros na filha "ensGrades_Profissionais"  */
    if exists (select 1 from ensGrades_Profissionais t2, deleted t1
               where  t2.especialidade = t1.especialidade)
       begin
          select @errno  = 50006,
                 @errmsg = ''Existem registros em "ensGrades_Profissionais". Impossível excluir "ensEspecialidades".''
          goto error
       end

    /*  DeleteParentCascade: apaga todas as filhas "ensPolos_Especialidades"  da Pai "ensEspecialidades"  */
    set nocount on

    delete ensPolos_Especialidades
      from   ensPolos_Especialidades t2, deleted t1
      where  t2.especialidade = t1.especialidade

    set nocount off

    /*  DeleteParentCascade: apaga todas as filhas "ensEspecialidades_Profissionais"  da Pai "ensEspecialidades"  */
    set nocount on

    delete ensEspecialidades_Profissionais
      from   ensEspecialidades_Profissionais t2, deleted t1
      where  t2.especialidade = t1.especialidade

    set nocount off

    /*  DeleteParentCascade: apaga todas as filhas "ensRegioesAdm_ValoresPadrao"  da Pai "ensEspecialidades"  */
    set nocount on

    delete ensRegioesAdm_ValoresPadrao
      from   ensRegioesAdm_ValoresPadrao t2, deleted t1
      where  t2.especialidade = t1.especialidade

    set nocount off

    /*  DeleteParentSetNull: Exclusão de registro na pai "ensEspecialidades" deixa null a chave na filha "ensProfissionais"  */
    set nocount on

    update ensProfissionais
     set   especialidade_principal = NULL
    from   ensProfissionais t2, deleted t1
    where  t2.especialidade_principal = t1.especialidade

    set nocount off

    return

error:
    raiserror @errno @errmsg
    rollback  transaction
end
')
----------------------------------------

Thanks a lot for help
Alex
ASKER CERTIFIED SOLUTION
Join our community to see this answer!
Unlock 1 Answer and 2 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 2 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros