Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Renata Pedrosa

Recuperar valor de procedure

Recommended Posts

Pessoal criei esta procedure abaixo no sql e esta funcionando legal, só que eu preciso retornar ao asp o

IDENTITY que do registro criado só que não estou sabendo como receber esse valor no asp.

 

Segue procedure e parte do codigo asp:

 

CREATE PROCEDURE sp_inserir_cliente              
  @id_estado int,                
  @id_cidade int,                
  @id_categoria int,                
  @id_subcategoria int,                
  @id_razaosocial nvarchar(50),              
  @id_nomefantasia nvarchar(50),              
  @id_CNPJ nvarchar(18),          
  @id_endereco nvarchar(80),          
  @id_numero nvarchar(6),                
  @id_bairro nvarchar(50),               
  @id_cep nvarchar(10),          
  @id_telefone nvarchar(15),          
  @id_fax nvarchar(15),          
  @id_email nvarchar(50),          

@idc int OUTPUT
                
As                
INSERT INTO cliente(CNPJCPF, razaosocial, nomefantasia, endereco, bairro, numero, idc_cidade, idc_estado, cep, telefone, fax, email)   
             
values(@id_CNPJ, @id_razaosocial, @id_nomefantasia, @id_endereco, @id_bairro, @id_numero, @id_cidade, @id_estado, @id_cep, @id_telefone, @id_fax, @id_email)
                          
SET @idc = @@IDENTITY                
SELECT @idc           
  
               
[b]CODIGO ASP:[/b]

'Cria um command no sql
Set cmdatualiza = Server.CreateObject("ADODB.Command")

'Define conexao a ser usada
Set cmdatualiza.ActiveConnection = conn

'Conecta a pagina com a procedure
cmdatualiza.CommandText="sp_inserir_cliente"
cmdatualiza.CommandType = 4
cmdatualiza.ParameteRs.Refresh

'Passa os parametros para procedure
cmdatualiza.ParameteRS("@id_razaosocial") = razaosocial
cmdatualiza.ParameteRS("@id_nomefantasia") = nomefantasia
cmdatualiza.ParameteRS("@id_CNPJ") = CNPJ
cmdatualiza.ParameteRS("@id_endereco") = endereco
cmdatualiza.ParameteRS("@id_numero") = numero
cmdatualiza.ParameteRS("@id_bairro") = bairro
cmdatualiza.ParameteRS("@id_estado") = estado
cmdatualiza.ParameteRS("@id_cidade") = cidade
cmdatualiza.ParameteRS("@id_cep") = cep
cmdatualiza.ParameteRS("@id_telefone") = telefone
cmdatualiza.ParameteRS("@id_fax") = fax
cmdatualiza.ParameteRS("@id_email") = email

id = cmdatualiza.ParameteRS("@idc")

'Executa a procedure
 cmdatualiza.Execute
o variavel id esta ficando vazia, ou seja, não esta recebendo o valor retornado pela procedure.

 

Alguem sabe como fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo

 

criar uma stored procedure:

 

Create Procedure checa_usuario
@email varchar(100),
@saida varchar(30) output
as
IF EXISTS(Select * from usuarios where email like @email)
BEGIN
Select @saida='o email ' + @ email + ' foi encontrado'
END
ELSE
BEGIN
Insert into usuarios(email) values(@email)
Select @saida = 'Este usuario foi inserido!,' + @@identity + ' é a chave primaria do usuario'
END

o nome da STORED PROCEDURE checa_usuario

Logo em seguida declaramos as variáveis que irão receber parâmetros...

 

 

@email receberá os parâmetros e passará para a stored procedure.

 

@saida foi declarada como output, ou seja, receberá dados da procedure para retornar para o ASP, VB, etc...

 

Fiz um select que checa se o email existe. Se existir, retornará que o email existe. Caso contrário, ele irá inserir o e-mail e retornar uma mensagem de que foi inserido o número da chave primária deste usuário.

 

<html>
<head>
<title>Stored Procedure  Simplicidade e Facilidade</title>
</head>

<%
Stracao = request.form("acao")
Stremail = request.form("email")
If Stracao="checar" then
'Abrindo conexao com o banco de dados
Set conexao=Server.CreateObject("ADODB.Connection")
Conexao.open "Seuodbc","usuario","senha"
'setamos o COMMAND do ADO
Set cmd = Server.CreateObject(ADODB.Command)
'seta a conexao ativa para o objeto 
Set cmd.ActiveConnection = Conexao
'passamos o nome da stored procedure
cmd.CommandText = "checa_usuario"
'passamos o parametro de execucao do commando, 4 refere-se a procedure
cmd.CommandType = 4
cmd.Parameters.Refresh
  'a variavel declarada na procedure é passada pelo command do ADO
cmd.Parameters("@email") = Trim(Stremail)
'recebemos o valor de @saida vindo da procedure
Strsaida = cmd.Parameters.Item("@saida")
' colocamos na tela o resultado
Response.write Strsaida
'descarregamos o objeto
Set cmd=nothing
'fechamos a conexao..
Conexao.close
Set conexao=nothing
End if
%>

<body>
<form method="post" action="teste.asp">
Digite o email: <input type="text" name="email">
<input type="hidden" name="acao" value="checar">
<input type="submit" value="Verifique">
</form>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.