none
Procedure RRS feed

  • Pergunta

  • Pessoal preciso de uma procedure como base de exemplo para que antes de inserir ela valide um determinado campo este campo não pode esta nulo ou vazio.

    Alguém pode me ajudar.

    segunda-feira, 23 de novembro de 2015 14:19

Respostas

  • CREATE PROCEDURE usp_Inserir  
      @val1 VARCHAR(20),  
      @val2 VARCHAR(20)
    AS
    BEGIN
          IF @val1 IS NULL AND @val2 IS NULL BEGIN
            SELECT 'Todos os paramêtros não podem ser nulos' AS 'Informações Incorretas';
          END ELSE IF @val1 = '' AND @val2 = '' BEGIN
            SELECT 'Todos os paramêtros não podem ser nulos' AS 'Informações Incorretas';
          END ELSE BEGIN
            //IMPLEMENTAÇÃO DO CODIGO ↓
            INSERT INTO tbl (values) VALUES (values);      
          END
    END
    GO

    • Marcado como Resposta José Diz domingo, 1 de abril de 2018 11:25
    segunda-feira, 21 de dezembro de 2015 00:16
  • Algumas questão acerca dessa procedure....

    1. Não faça dois IF's para o valor null e vazio. Se for o caso, use o COALESCE() ou um ISNULL() e compare com o vazio.
    2. Não retorne a procedure com um SELECT. use o RAISERROR - ou o THROW, se estiver usando o SQL Server 2012.
    3. Se o campo já não permite nulo, você não precisa 'validar' com os IF's... Você pode realizar simplesmente o insert e fazer um TRY / CATCH, jogando a exceção para quem o chamou.

    Espero que ajude.

    []'s!


    /* Logan Destefani Merazzi - DBA | @LoganMerazzi | http://www.merazzi.eti.br
    Se a resposta for útil, vote nela. Se resolveu, marque-a como resposta. */

    segunda-feira, 21 de dezembro de 2015 11:44

Todas as Respostas

  • Oséas,

    Você se referi a verificar se o campo pode aceitar valor nulo ou ficar vazio?

    Ou deseja verificar se esta sendo passado através do Insert ou valor nulo?

    Existe uma grande diferença entre as duas situações.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 17 de dezembro de 2015 17:06
  • CREATE PROCEDURE usp_Inserir  
      @val1 VARCHAR(20),  
      @val2 VARCHAR(20)
    AS
    BEGIN
          IF @val1 IS NULL AND @val2 IS NULL BEGIN
            SELECT 'Todos os paramêtros não podem ser nulos' AS 'Informações Incorretas';
          END ELSE IF @val1 = '' AND @val2 = '' BEGIN
            SELECT 'Todos os paramêtros não podem ser nulos' AS 'Informações Incorretas';
          END ELSE BEGIN
            //IMPLEMENTAÇÃO DO CODIGO ↓
            INSERT INTO tbl (values) VALUES (values);      
          END
    END
    GO

    • Marcado como Resposta José Diz domingo, 1 de abril de 2018 11:25
    segunda-feira, 21 de dezembro de 2015 00:16
  • Algumas questão acerca dessa procedure....

    1. Não faça dois IF's para o valor null e vazio. Se for o caso, use o COALESCE() ou um ISNULL() e compare com o vazio.
    2. Não retorne a procedure com um SELECT. use o RAISERROR - ou o THROW, se estiver usando o SQL Server 2012.
    3. Se o campo já não permite nulo, você não precisa 'validar' com os IF's... Você pode realizar simplesmente o insert e fazer um TRY / CATCH, jogando a exceção para quem o chamou.

    Espero que ajude.

    []'s!


    /* Logan Destefani Merazzi - DBA | @LoganMerazzi | http://www.merazzi.eti.br
    Se a resposta for útil, vote nela. Se resolveu, marque-a como resposta. */

    segunda-feira, 21 de dezembro de 2015 11:44
  • Algumas questão acerca dessa procedure....

    1. Não faça dois IF's para o valor null e vazio. Se for o caso, use o COALESCE() ou um ISNULL() e compare com o vazio.
    2. Não retorne a procedure com um SELECT. use o RAISERROR - ou o THROW, se estiver usando o SQL Server 2012.
    3. Se o campo já não permite nulo, você não precisa 'validar' com os IF's... Você pode realizar simplesmente o insert e fazer um TRY / CATCH, jogando a exceção para quem o chamou.

    Espero que ajude.

    []'s!


    /* Logan Destefani Merazzi - DBA | @LoganMerazzi | http://www.merazzi.eti.br
    Se a resposta for útil, vote nela. Se resolveu, marque-a como resposta. */

    Oséas,

    Além das orientações do Logan, se você estiver utilizando o SQL Server 2012 ou superior, poderá utilizar o comando IIF dentro de um Select.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 22 de dezembro de 2015 12:55