SQL SERVER X PROCEDURE
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...
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...
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:
e para obter o CliCodigo depois do insert,voce pode usar o seguinter:
SELECT SCOPE_IDENTITY() AS [CliCodigo]
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.
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.
nao precisa declarar o @Codigo,somente use o SELECT SCOPE_IDENTIT()
e o resultado tu pode obter como se fosse uma consulta normal
e o resultado tu pode obter como se fosse uma consulta normal
Para vc mandar esse codigo de cadastro para fora que quer, faça algo do tipo:
Deu pra entender?
Qqer coisa, posta ae...
abraaaaaaço
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
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
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...
Ja vou fechar o topico.. primeiro vou tentar fazer .... pois pode ser q de alguma coisinha..rsrsrs...
Valeu funcionou.. estou ainda me perdendo na parte de commit rolback.. mais eu tirei e funcionou.. vou dar uma estudada nisso depois.
VALEU
VALEU
Tópico encerrado , respostas não são mais permitidas