Usuário com melhor resposta
Definir Campo varchar

Pergunta
-
Olá pessoal,
Tenho na procedure abaixo um campo tipo @CH_TIPO AS int OUTPUT, como defino um campo varchar, 50 com OUTPUT,
Grato,
Dirceu
ALTER
PROCEDURE [dbo].[USP_Pec_01_Usuarios_Seleciona]@LOGIN
AS varchar(50),@SENHA
AS varchar(255),@SITUACAO
AS varchar(7),@VCATEGORIA
As Varchar(50),@CH_TIPO
AS int OUTPUTAs
if
(@login Is Not Null)Begin
SET NOCOUNT ONSELECT
a.Descricao, a.ch_top from Tb_Pec_01_Usuarios_Grupos aINNER
JOIN Tb_Pec_01_Usuarios b ON a.ch_top=b.grupo WHERE Login = @Login AND Senha = @Senha And Situacao = @Situacao AND Categoria = @VCategoriaSET
@CH_TIPO = (SELECT ch_top from Tb_Pec_01_Usuarios WHERE Login = @Login AND Senha = @Senha And Situacao = @Situacao And Categoria = @vCategoria)update
Tb_Pec_01_Usuarios set situacao = 'Inativo' WHERE Data_Vencimento > Data_Cadastro + 365SET
NOCOUNT OFFEnd
Else
Begin
SET NOCOUNT ON Select nome From tbl_pec_01_Usuarios SET NOCOUNT OFFEnd
RETURN
Respostas
Todas as Respostas
-
-
-
Olá Pessoal,
Fiz dessa forma;
set
ANSI_NULLS ONset
QUOTED_IDENTIFIER ONGO
-- =============================================
-- Author: Dirceu Martins de Azevedo
-- Create date: 07/06/2007
-- Description: Busca registros do Banco
-- =============================================
ALTER
PROCEDURE [dbo].[USP_Pec_01_Usuarios_Seleciona]@LOGIN
AS varchar(50),@SENHA
AS varchar(255),@SITUACAO
AS varchar(7),@VCATEGORIA
As Varchar(50),@CHCATEGORIA
As Varchar(50) OUTPUT,@CH_TIPO
AS int OUTPUTAs
if
(@login Is Not Null)Begin
SET NOCOUNT ONSELECT
a.Descricao, a.ch_top from Tb_Pec_01_Usuarios_Grupos aINNER
JOIN Tb_Pec_01_Usuarios b ON a.ch_top=b.grupo WHERE Login = @Login AND Senha = @Senha And Situacao = @Situacao AND Categoria = @VCategoriaSET
@CH_TIPO = (SELECT ch_top from Tb_Pec_01_Usuarios WHERE Login = @Login AND Senha = @Senha And Situacao = @Situacao And Categoria = @vCategoria)SET
@CHCATEGORIA = (SELECT Categoria from Tb_Pec_01_Usuarios WHERE Login = @Login AND Senha = @Senha And Situacao = @Situacao And Categoria = @vCategoria)update
Tb_Pec_01_Usuarios set situacao = 'Inativo' WHERE Data_Vencimento > Data_Cadastro + 365SET
NOCOUNT OFFEnd
Else
Begin
SET NOCOUNT ON Select nome From tbl_pec_01_Usuarios SET NOCOUNT OFFEnd
RETURN
Fiz dessa forma, sem isso essas linha abaixo funciona, com elas não:
CHCATEGORIA As Varchar(50) OUTPUT,
SET @CHCATEGORIA = (SELECT Categoria from Tb_Pec_01_Usuarios WHERE Login = @Login AND Senha = @Senha And Situacao = @Situacao And Categoria = @vCategoria)
Qual o erro,
Grato
Dirceu
-
-
-
entao coloca assim
SET @CHCATEGORIA = (SELECT isnull(Categoria,-99) from Tb_Pec_01_Usuarios WHERE Login = @Login AND Senha = @Senha And Situacao = @Situacao And Categoria = @vCategoria)
sendo que -99 é uma categoria que não existe e que você irá tratar na aplicação ou mesmo no banco.
[]'s
Rafael Krisller
-
Olá,
Deu erro de novo, não sei o que poder ser, estou recebendo dessa forma no código...
Abs,
Dirceu
-
Mas ocorre erro aonde? No SQL , erro de syntaxe ?
Porque você tem que recuperar o valor depois de executar a procedure.
EX:
cmd.ExecuteNonQuery()
if prChCat.Value == "-99"
{
//categoria invalida.
}
Descreva o erro que fica mais fácil de resolver.
[]'s
Rafael Krisller
-
Oi,
E um sistema de login, como uso ExecuteScalar(), só posso retornar um valor;
Preciso criar uma Session com o id do usuário, então faço isso,:
@CH_TIPO
AS int OUTPUTSET
@CH_TIPO = (SELECT ch_top from Tb_Pec_01_Usuarios WHERE Login = @Login AND Senha = @Senha And Situacao = @Situacao And Categoria = @vCategoria)Então recebo deste forma:
SqlParameter
prChTipo;prChTipo=
new SqlParameter("@CH_TIPO" ,SqlDbType.Int,4);prChTipo.Value = 0;
cmd.Parameters.Add(prChTipo);
prChTipo.Direction =
ParameterDirection.InputOutput;Então crio a Session com o id do usuário.
Session[
"CHTIPO"] = prChTipo.Value.ToString();Até aqui roda sem problemas...
------------------------------------------------------------------------------------------------------------------------
Meu problema começa aqui...
Preciso passar além do id do usuário, a categoria do usuário cadastrada no banco...
Faço assim:
@CHCATEGORIA
As Varchar(50) OUTPUT,SET
@CHCATEGORIA = (SELECT Categoria from Tb_Pec_01_Usuarios WHERE Login = @Login AND Senha = @Senha And Situacao = @Situacao And Categoria = @vCategoria)e recebo desta forma:
Só que desta forma o programa deixa de funcionar...
Dirceu
-
-
-
Olá Dennes,
Estou com problemas na classe que me passou, poderia me dar uma força.
Me passou esta clesse em VB, esta convertida pra C#.
public
class clsSession : System.Web.UI.Page{
public string CHTIPO{
get{
if ((Session["CHTIPO"] != null)){
return (Session["CHTIPO"].ToString());}
if (Context.User.Identity.IsAuthenticated){
Session[
"CHTIPO"] = Context.User.Identity.Name;}
else{
System.Web.Security.
FormsAuthentication.RedirectToLoginPage();Response.End();
}
return (Session["CHTIPO"].ToString());}
}
}
Cono faço para chamar esta classe e passando os parâmetro no meu page Load..
Dirceu