Como criar uma stored Procedure que testa se existe os dados na tabela antes de inserir??

Respondido Como criar uma stored Procedure que testa se existe os dados na tabela antes de inserir??

  • segunda-feira, 5 de março de 2012 23:52
     
     

    Olá pessoal, eu criei a SP abaixo, mas eu gostaria de testar na SP se o cnpj e o codigo já exitem cadastrados na tabela antes de inserir os dados.

    USE [mydatabase]
    GO
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO
    CREATE PROCEDURE [dbo].[InsertData]
    (
     @paisId int,
     @codigo varchar(10),
     @nome varchar(50),
     @nome2 varchar(50),
     @cnpj varchar(22),
     @set varchar(50)
    )
    AS
        Insert into myTable(paisId,codigo,nome,nome2,cnpj,set) values (@paisId,@codigo,@nome,@nome2,@cnpj,@set)
       
    RETURN
    GO

    alguém poderia me dizer como eu poderia fazer a SP retornar -1 caso exista o codigo e o cnpj na tabela, e caso não exista retornar o id da linha inserida??

    OBS: eu estou chamando esta procedure numa classe em C# windows form

Todas as Respostas

  • terça-feira, 6 de março de 2012 00:29
     
     Respondido Contém Código

    Olá WCA,

    Você pode alterar sua proc da forma com está no script abaixo:

    CREATE PROCEDURE [dbo].[InsertData]
    (
     @paisId int,
     @codigo varchar(10),
     @nome varchar(50),
     @nome2 varchar(50),
     @cnpj varchar(22),
     @set varchar(50)
    )
    AS
    IF EXISTS 
    (
    	SELECT CODIGO,CNPJ FROM myTable
    	WHERE CODIGO = @codigo
    	AND CNPJ = @cnpj
    )
    BEGIN
    	RETURN - 1
    END 
    ELSE
    BEGIN 
    	 Insert into myTable(paisId,codigo,nome,nome2,cnpj,set) values (@paisId,@codigo,@nome,@nome2,@cnpj,@set)
    END

    Só não entendi o que você quis dizer com o id da linha, se sua tabela possui uma coluna IDENTITY e você quer retornar o último valor basta você acrescentrar o select abaixo logo após o insert.

      SELECT IDENT_CURRENT('myTable')
    Espero ter ajudado.


    David Silva | MCITP| MCTS | MCP | ITILF | Blog: http://tilive.wordpress.com

  • terça-feira, 6 de março de 2012 00:52
     
     
    WCA tente acompanhar um dos tópicos criados, ambos possuem repostas que possa te ajudar com sua questão:

    http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/fe1b9342-69e5-487a-8f4d-4f992739c6b8/

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

  • terça-feira, 6 de março de 2012 11:42
     
     

    WCA,

    Se você estiver utilizando o SQL Server 2008 poderá utilizar o comando Merge, através dele você tem a possibilidade de realizar este tipo de verificação em conjunto com os comandos Insert, Update e Delete.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]