SQL SERVER X PROCEDURE

USUARIO.EXCLUIDOS 30/11/2006 21:43:43
#187282
Oi , estou com a seguinte dificuldade. Tenho um banco em sql server 2005, criei uma stored procedure para cadastrar cliente, mas nao estou conseguindo obter retorno da procedure...
Ex.

Create Procedure SP_Inserir

@Codigo int,
@Nome varchar(50)

as

Insert into TabCliente(clicodigo, clinome) value(@Codigo, @Nome)


O q preciso e saber se o codigo do cliente ja foi cadastrado, e responder para o meu sistema.
Sei q tem q colocar uma variavel a mais para o retorno, sei ate como obter o valor dela no vb, o q nao consigo e definir valor para ela no sql....

Colocando um select antes do insert, para so inserir caso o cliente nao exista, e se existir preencher esta variavel com algo...

Valeu pela ajuda...
RAMSES 30/11/2006 21:53:15
#187285
uma coisa que voce pode fazer eh colocar o CliCodigo como Identity autoincrementavel,dae so precisa passar o nome(ja que o autoincrementavel quen cuida para nao duplicar eh o sql)

e para obter o CliCodigo depois do insert,voce pode usar o seguinter:
SELECT SCOPE_IDENTITY() AS [CliCodigo]

USUARIO.EXCLUIDOS 30/11/2006 21:57:37
#187286
Amigo, a sua resposta ja ajudou muito em outra duvida... eu coloquei codigo para simplificar.. mas e q preciso mesmo e consultar se o CNPJ ja foi cadastrado...rsrsrs

tem como antes para ai sim eu inserir o cliente... outra coisa no codigo q vc me passou posso usar assim, pois o meu codigo ja esta autonumeracao no sql..

Create Procedure SP_Inserir

@Codigo int,
@Nome varchar(50)

as

Insert into TabCliente(clinome) value(@Nome)

@Codigo = Select SCOPE_IDENTTY() AS [cliCodigo]

* mas uma coisa.. na frente da variavel @Codigo qd declaro ela, eu tenho q colocar algo como output, para o sql saber q ela e de saida.



RAMSES 01/12/2006 10:29:48
#187345
nao precisa declarar o @Codigo,somente use o SELECT SCOPE_IDENTIT()
e o resultado tu pode obter como se fosse uma consulta normal
JPC666 01/12/2006 11:59:57
#187383
Resposta escolhida
Para vc mandar esse codigo de cadastro para fora que quer, faça algo do tipo:

   

Create Procedure SP_Inserir (@Codigo int, @Nome varchar(50), @Codigo int output)

as
Begin
Begin Tran
Insert into TabCliente(clinome) value(@Nome)

set @Codigo = SCOPE_IDENTTY()

return
Commit Tran
end


Deu pra entender?
Qqer coisa, posta ae...
abraaaaaaço
JPC666 01/12/2006 12:05:57
#187384
Ah, caso vc queira saber se o codigo jah foi cadastrado antes de cadastrar, é só usar algo do tipo (obs: colocquei a variavel de retorno como codigo na resposta anterior, mas na verdade eh CodigoRetorno, mals ae...):




  
Create Procedure SP_Inserir (@CNPJ varchar(14), @Codigo int, @Nome varchar(50), @CodigoRetorno int output)

as
Begin
Begin Tran
If @CNPJ = (select CNPJ from tabela where cod = ao que vc quer)
begin
'faz o q vc quiser
end
else
begin
'insere
Insert into TabCliente(clinome) value(@Nome)

set @CodigoRetorno = SCOPE_IDENTTY()

return
end
Commit Tran
end


USUARIO.EXCLUIDOS 01/12/2006 12:18:25
#187385
Putz gente... a ajuda de vcs esta sendo muito util .. valeu mesmo...
Ja vou fechar o topico.. primeiro vou tentar fazer .... pois pode ser q de alguma coisinha..rsrsrs...


USUARIO.EXCLUIDOS 01/12/2006 13:05:02
#187397
Valeu funcionou.. estou ainda me perdendo na parte de commit rolback.. mais eu tirei e funcionou.. vou dar uma estudada nisso depois.

VALEU
Tópico encerrado , respostas não são mais permitidas