Ir para conteúdo

Arquivado

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

thi.ASP

Atribuindo valores 'as variaveis

Recommended Posts

Pessoal, estou com uma pequena duvida no T-SQL

 

No ASP eu utilizo um recordset para atribuir valores de um select às variaveis certo..

 

Set Rs = Conn.Execute("Select * From Tabela Where ID=1")

  var1 = Rs("Campo1")

  var2 = Rs("Campo2")

Estou fazendo uma Stored Procedure para validar um login... e gostaria q essa procedure retornasse alguns campos se o login for valido... segue abaixo o código

 

CREATE PROCEDURE VerificaLogin

@Email char(80),

@Senha char(10),

@Verifica char(5) output,

@Acesso int output,

@Status int output,

@ID int output

AS

BEGIN

 

if exists(Select Email From Tabela Where Email=@Email)

  if exists(Select Senha, ID, Acesso, Status From Tabela Where Senha=@Senha)

  Begin

  Set @Verifica = Verifica

  Set @Acesso = Acesso

  Set @ID = ID

  Set @Status = Status[/color]

-- como faço para atribuir o valor do select aqui? ou vou tq fazer select por select a cada variavel?

  End

  Else

  Set @Verifica = 'false'

Else

  Set @Verifica = 'false'

END

Como faço pra atribuir o valor das variaveis? e esta certo essa verificação ou tem algum jeito melhor?

 

Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi direito mas acho que seria isso:CREATE PROCEDURE VerificaLogin@Email char(80),@Senha char(10),@Verifica char(5) output,@Acesso int output,@Status int output,@ID int outputASBEGINif exists(Select Email From Tabela Where Email=@Email) if exists(Select Senha, ID, Acesso, Status From Tabela Where Senha=@Senha) Begin -- Aqui você atribui os valores da sua tabela em variáveis SELECT @VERIFICA = verifica, @ACESSO = acesso, @ID = id, @STATUS = status FROM Tabela WHERE email = @EMAIL AND senha = @SENHA; End Else Set @Verifica = 'false'Else Set @Verifica = 'false'ENDvocê pode melhorar esse codigo:if exists( SELECT email FROM tabela WHERE email = @EMAIL AND senha = @SENHA ) Begin -- Aqui você daria um outro select atribuindo os valores SELECT @VERIFICA = verifica, @ACESSO = acesso, @ID = id, @STATUS = status FROM Tabela WHERE email = @EMAIL AND senha = @SENHA End Else Set @Verifica = 'false'Else Set @Verifica = 'false'ENDassim você evita uma consulta e melhora performance.Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fernando, e no caso de necessitar utilizar uma variável dentro da procedure? Eu tenho duas tabelas, uma de cliente e outra de endereço, e vou fazer a inserção de dados de uma única vez, numa procedure. Ai tenho que depois de inserir o novo cliente pegar o campo ID (Chave) da tabela de cliente para utilizar na tabela de endereço, eu estou usando assim.

 

CREATE PROCEDURE pr_chamado

 

( @sexo [char](1),

@nome [varchar](100),

@sobrenome [varchar](100),

@nascimento [smalldatetime],

@cpf [varchar](15),

@rg [varchar](15),

@cnpj [varchar](15),

@tipo1 [int],

@segmentacao [int],

@figuracao [char](10),

 

-- paramentos da tabela endereco

 

@usuario [int],

@endereco [varchar](50),

@numero [varchar](10),

@cep [varchar](10),

@cidade [varchar](100),

@estado [char](2),

@telefone1 [varchar](10),

@telefone2 [varchar](10),

@celular1 [varchar](10),

@celular2 [varchar](10),

@referencia [text],

@observacao [text],

@tipo [char](1),

@bloco [varchar](5),

@apto [varchar](10),

@id_novo [int] output)

as

 

INSERT INTO cliente

([sexo],

[nome],

[sobrenome],

[nascimento],

[cpf],

[rg],

[cnpj],

[tipo],

[segmentacao],

[figuracao])

 

VALUES

( @sexo,

@nome,

@sobrenome,

@nascimento,

@cpf,

@rg,

@cnpj,

@tipo1,

@segmentacao,

@figuracao)

 

Select @id_novo = max (id) from cliente

 

INSERT INTO endereco

( [usuario],

[endereco],

[numero],

[cep],

[cidade],

[estado],

[telefone1],

[telefone2],

[celular1],

[celular2],

[referencia],

[observacao],

[tipo],

[bloco],

[apto])

 

VALUES

( @id_novo,

@endereco,

@numero,

@cep,

@cidade,

@estado,

@telefone1,

@telefone2,

@celular1,

@celular2,

@referencia,

@observacao,

@tipo,

@bloco,

@apto)

GO

 

Mas quando chamo a procedure.

 

execute pr_chamado '1','wellington','pessoa','12/16/1976','12345678996','1613987','1','1',1,'a','said','13','58025380','1','pb','1','2','3','4','5','6','1','7','6'

 

Ela me retorna um erro, que identifiquei como sendo a falta do valor para o campo usuario, que estou usando como sendo @id_novo, como devo fazer para poder trabalhar assim? É que tenho muitas tabelas a inserir utilizando esta maneira.

 

 

quote=Fernando_Castro,Aug 19 2004, 05:33 PM]

Não entendi direito mas acho que seria isso:

 

CREATE PROCEDURE VerificaLogin

@Email char(80),

@Senha char(10),

@Verifica char(5) output,

@Acesso int output,

@Status int output,

@ID int output

AS

BEGIN

 

if exists(Select Email From Tabela Where Email=@Email)

if exists(Select Senha, ID, Acesso, Status From Tabela Where Senha=@Senha)

Begin

 

-- Aqui você atribui os valores da sua tabela em variáveis

SELECT @VERIFICA = verifica,

@ACESSO = acesso,

@ID = id,

@STATUS = status

FROM Tabela

WHERE email = @EMAIL AND senha = @SENHA;

 

End

Else

Set @Verifica = 'false'

Else

Set @Verifica = 'false'

END

 

 

você pode melhorar esse codigo:

 

if exists( SELECT email FROM tabela WHERE email = @EMAIL AND senha = @SENHA )

Begin

 

-- Aqui você daria um outro select atribuindo os valores

SELECT @VERIFICA = verifica,

@ACESSO = acesso,

@ID = id,

@STATUS = status

FROM Tabela

WHERE email = @EMAIL AND senha = @SENHA

 

End

Else

Set @Verifica = 'false'

Else

Set @Verifica = 'false'

END

 

assim você evita uma consulta e melhora performance.

 

 

Espero ter ajudado.

<{POST_SNAPBACK}>

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.