Postagem

Raiserror (T-SQL): o que é e como funciona

17 de fevereiro de 2023 | 7 min de leitura
Banner da publicação.
Se você é programador SQL já deve conhecer ou pelo menos ter ouvido falar sobre o raiserror. Uma das demandas que a Databasers teve nos últimos dias foi realizar uma série de tratativas de erros com TRY CATCH e, em alguns momentos, houve a necessidade de forçar uma mensagem de erro em caso de falha na execução do bloco.

Sabendo que ainda existem muitas dúvidas sobre o raiserror, preparamos um conteúdo explicativo sobre o funcionamento dessa função dentro do SQL Server em diferentes ocasiões. Vamos lá?

O que é o raiserror?

O raiserror é um comando de alerta de erros que tem como principal função retornar uma mensagem em forma de erro gerada pelo SQL.

Veja o exemplo abaixo:

Comando:

Mostrando comando raiserror.

Retorno do comando acima:

Retorno mostrando comando raiserror.

A função permite que você personalize a mensagem de retorno do raiserror, entretanto não é possível montar um texto dinâmico.

Comando:
Mostrando comando com concat raiserror.

Retorno do comando acima:

Retorno mostrando comando com concat raiserror.

Como contornar a mensagem de retorno do raiserror?

Existem algumas maneiras diferentes de contornar essa situação, desde as mais simples às mais complexas. Abaixo vamos te falar sobre algumas dessas formas:

1. Atribuir a uma variável

Nesse modelo é criada uma variável de texto (string) e armazenada ao texto combinado à essa variável. Dessa forma, o raiserror irá fazer chamada da variável ao invés da mensagem diretamente.

Dê uma olhada no exemplo abaixo:

Comando:
Mostrando comando com concat correto raiserror.

Retorno do comando acima:

Retorno mostrando comando com concat correto raiserror.

2. Trabalhar com junção de string adicionando novo(s) parâmetro(s)

Nesse modelo, podemos estar sempre criando um novo parâmetro com o trecho de texto a ser adicionado. Mas atenção: é necessário adicionar “%s” no local onde o trecho será substituído.

Podem ser adicionados quantos parâmetros forem necessários, mantendo a ordem de inserção dos trechos de acordo com os “%s” adicionados.

Veja o exemplo abaixo:

Comando:
Mostrando comando com concat alternativo raiserror.

Retorno do comando acima:

Retorno mostrando comando com concat alternativo raiserror.

Cláusulas do raiserror

O comando raiserror pode possuir algumas cláusulas em sua chamada que acrescentam novas funcionalidades. São elas:

With Nowait
Essa cláusula faz com que a exibição da mensagem de erro seja exibida em tempo real de execução. Geralmente é utilizada com o raiserror quando queremos acompanhar a execução de algum script ou procedure.

Comando:
Mostrando comando com withnowait raiserror.

Retorno do comando acima:

Retorno mostrando comando com withnowait raiserror.

With Log
Esse item faz com que a mensagem de erro seja armazenada dentro do log de erros do SQL Server e do log do aplicativo da instância do Management Studio. Para ser possível adicioná-lo, o usuário deve ter a função de sysadmin ou permissão de ALTER TRACE.

Essa cláusula é obrigatória para execução de raiserror com criticidade a partir do nível 19.

Comando raiserror com criticidade nível 19 sem cláusula WITH LOG:
Mostrando comando sem withlog raiserror.

Retorno do comando acima:

Retorno mostrando comando sem withlog raiserror.

Comando raiserror com criticidade nível 19 com cláusula WITH LOG
Mostrando comando com withlog raiserror.

Retorno do comando acima:

Retorno mostrando comando com withlog raiserror.

Retorno do comando acima de usuário sem a função de sysadmin:

Retorno mostrando comando com withlog sysadmin raiserror.

SETERROR
Essa cláusula faz com que o valor da variável do sistema @@ERROR armazene o código do erro na execução do comando raiserror.

Comando raiserror com criticidade nível 10 com cláusula WITH SETERROR:
Mostrando comando com withseterror raiserror.

Retorno do comando acima e a impressão do código do erro:

Retorno mostrando comando com withseterror raiserror.

É possível ver que o código gerado no raiserror é armazenado em @@ERROR e em seguida, o mesmo é exibido em tela.

O raiserror pode apresentar seu funcionamento de formas diferentes dependendo do nível de criticidade que definimos na função:
Tabela resumo raiserror.

É importante reforçar que, com base na tabela acima, até o nível 19, o retorno de erro não interrompe a execução de um loop. Para isso, será necessário utilizar o comando return.

Gostou do conteúdo? Continue nos acompanhando em nossas redes sociais para não perder nenhuma nova informação.

Contato

Contate-nos para um orçamento ou mande sua dúvida

contato@databasers.com.br

(11) 2391-6626

Agradecemos seu contato

Recebemos sua solicitação, e logo entraremos em contato.

Aproveite para saber mais de nossos serviços

Segurança Plataforma Terceirização Performance Desenvolvimento

Postagem do Blog

Fique por dentro dos projetos e destaques do mundo da tecnologia

Banner da publicação.

Raiserror (T-SQL): o que é e como funciona

17 de fevereiro de 2023 | 7 min de leitura

Se você é programador SQL já deve conhecer ou pelo menos ter ouvido falar sobre o raiserror. Uma das demandas que a Databasers teve nos últimos dias foi realizar uma série de tratativas de erros com TRY CATCH e, em alguns momentos, houve a necessidade de forçar uma mensagem de erro em caso de falha na execução do bloco.

Sabendo que ainda existem muitas dúvidas sobre o raiserror, preparamos um conteúdo explicativo sobre o funcionamento dessa função dentro do SQL Server em diferentes ocasiões. Vamos lá?

O que é o raiserror?

O raiserror é um comando de alerta de erros que tem como principal função retornar uma mensagem em forma de erro gerada pelo SQL.

Veja o exemplo abaixo:

Comando:

Saiba Mais
Imagem relacionada à LGPD.

LGPD: o que sua empresa precisa saber para se adequar à lei

24 de março de 2020 | 6 min de leitura

Se você ainda não sabe o que é a LGPD ou ouviu falar, mas ainda não se atentou ao que realmente essa legislação representa, é melhor buscar se informar. A Lei Geral de Proteção de Dados (LGPD), Lei Federal n. 13.709, foi sancionada em 14 de agosto de 2018 e entrará em vigor em agosto de 2020. Seu objetivo principal é garantir transparência no uso dos dados das pessoas físicas. É uma alteração do chamado Marco Civil da Internet, Lei n. 12,925, de 23 de abril de 2014, que até então regulava essas transações.

A LGPD basicamente confere o controle das informações pessoais apenas a seus detentores, que podem ou não permitir, de forma espontânea, que seus dados sejam utilizados pelas empresas para determinados fins. A coleta, o armazenamento e o compartilhamento de dados sem autorização do usuário caracterizam, segundo a LGPD, infração, com multas que podem chegar a 2% do faturamento ou R$ 50 milhões por infração, o que provoca um grande impacto no setor de TI das companhias.

A primeira mudança nas relações entre empresas e pessoas é que se houver necessidade de o usuário fornecer qualquer dado que seja a certa empresa, essa precisará explicitar os motivos para isso, obtendo consentimento do usuário, esclarecendo de que forma esses dados serão utilizados e firmando o compromisso de não repassá-los a terceiros, numa relação de transparência e segurança. Assim, usuários exercem sua autoridade e gestão sobre seus próprios dados e as empresas manifestam sua segurança e compromisso com essas informações.

A legislação prevê que as empresas evitem artifícios que induzem o usuário à aceitação automática dos termos de uso, como letras muito pequenas na adesão, textos muito grandes e subjetivos e botões com opções como “Aceito”, “Ok” ou “Sim”, por exemplo. Estabelece também que as empresas explicitem quanto tempo ficarão com os dados dos usuários e quando e como serão retiradas de seus bancos. Elas também precisam permitir aos usuários que eles editem seus dados a qualquer momento, conferindo ou retirando permissões ou até mesmo removendo-os. E no caso de haver vazamentos ou qualquer mudança na política, os usuários devem ser comunicados imediatamente.

Essas definições principais se caracterizam como aspectos jurídicos, contratuais e de direito individual. Mas as mudanças não param por aí e as empresas não devem se iludir que apenas um contrato ou um pequeno texto explicativo em seus websites seguidos de um botão de aceite tornarão seus processos aderentes a nova legislação.

Para se adequarem à LGPD, as empresas precisam criar comitês de segurança da informação, responsáveis por gerenciar os procedimentos internos de tratamento dos dados coletados e armazenados. Esse comitê precisa conhecer todo o ciclo dos dados dentro da empresa e também os riscos envolvidos em sua manutenção. Portanto, o fluxo das informações não pode ser avaliada apenas no seu decorrer regular. Vazamentos de dados de qualquer natureza ou acessos que se comprovem indevidos poderão ser classificados como infrações a nova legislação, como por exemplo, um programador que copia uma lista de e-mails, um hacker que se aproprie de dados ao invadir um ambiente ou uma lista com dados sensíveis de clientes levadas por um vendedor para fora da empresa. Esses casos representam negligência ou imperícia da empresa em proteger os dados que não são dela, mas sim de seus usuários.

Por isso, a entrada em vigor da LGPD representa um enorme desafio para as empresas e seus setores de TI, marketing, comercial, atendimento e outros que lidam com dados dos clientes. Será necessário rever processos e políticas e ter agilidade para atuar em casos que se mostrarem desconformes. Todavia ganham todos nessa nova configuração: empresas tornam-se mais responsáveis com os dados e usuários entendem suas responsabilidades com as informações que fornecem.

Saiba Mais
Imagem relacionada à modelagem de dados.

Por que e como desenvolver rotinas diretamente em bancos de dados?

23 de março de 2020 | 6 min de leitura

O desenvolvimento de sistemas utilizando recursos de banco de dados de alto nível traz ao ambiente uma performance aprimorada, melhor qualidade das informações, e um maior nível de segurança. Ao se utilizar ferramentas como funções, visões e procedimentos armazenados de um banco de dados, a demanda de hardware é centralizada ao se eliminar camadas de aplicação desnecessárias, mantendo ao mesmo tempo dados e processamento em um único lugar. Além disso, há aplicação de regras que protegem contra acessos indevidos, maior controle das transações e implementação e manutenção mais simples e rápidas das rotinas, que passam a alcançar um nível mais profundo de controle, permitindo mudanças centralizadas e imediatas.

Nesse modelo de desenvolvimento, a fase inicial é a modelagem, ou seja, a criação de um desenho de entidades e seus relacionamentos que explique o funcionamento e o comportamento do sistema a partir do qual o banco será criado. Isso facilita não só seu entendimento, evitando erros de programação, projeto e funcionamento, com também ajudará a planejar corretamente as rotinas e componentes de controle que serão necessários ao longo do desenvolvimento. Por isso, na fase de modelagem, é importantíssimo entender qual é a real necessidade de uso desse banco de dados, para que o produto final seja capaz de cumprir exatamente a função para a qual foi construído. Isso garante usabilidade ao sistema e evita retrabalho.

Após a modelagem, a construção das rotinas internas precisará estar de acordo com as melhores práticas do mercado e recomendações dos fabricantes. A não observância desses atributos pode causar falhas e perdas de dados, falta de performance e ainda fazer o banco de dados consumir muitos recursos com o agravante de não ser eficiente e seguro. Quando mal elaboradas, as rotinas podem se tornar um grande problema.

A construção errônea e não otimizada do banco acarreta resultados contrários aos esperados, promovendo a ineficiência no processo. Desenvolver diretamente em um banco de dados não se resume a apenas criar os melhores códigos, mas desenvolvê-los para que sejam verdadeiras ferramentas de gestão, sem vícios ou imprecisões, ou seja, fornecendo recursos valiosos e tecnicamente bem elaborados que contribuam para a performance e a segurança do ambiente de TI.

Saiba Mais
`