Parametro em Store Procedure TODOS caso não tenha parametro
13/01/2011
0
Preciso fazer um store procedure onde caso o usuario não escolha um parametro o select traga todos os registro, sei que o SQL 2005 tem isso
minha tabela TBL_ALUNOS
ID, NOME, DATA_NASC, ENDERECO, ID_CURSO
Minha procedure:
CREATE PROCEDURE [escola].procAlunosPorCurso ( @CURSO SMALLINT)AS
SELECT TBL_ALUNOS.ID, TBL_ALUNOS.NOME, TBL_ALUNOS.DATA_NASC, TBL_ALUNOS.ENDERECO, TBL_ALUNOS.ID_CURSO, TBL_CURSOS.NOME_CURSO
FROM TBL_ALUNOS INNER JOIN TBL_CURSOS ON (TBL_CURSOS.ID = TBL_ALUNOS.ID_CURSO)
WHERE TBL_ALUNOS.ID_CURSO=@CURSO
Teria como colocar um parametro TODOS no dropDonwList ai trazer todos ????
Grato
Paulo Freire
Posts
14/01/2011
Luciana Batista
SELECT TBL_ALUNOS.ID, TBL_ALUNOS.NOME, TBL_ALUNOS.DATA_NASC, TBL_ALUNOS.ENDERECO, TBL_ALUNOS.ID_CURSO, TBL_CURSOS.NOME_CURSO
FROM TBL_ALUNOS INNER JOIN TBL_CURSOS ON (TBL_CURSOS.ID = TBL_ALUNOS.ID_CURSO)
WHERE TBL_ALUNOS.ID_CURSO= COALESCE (@CURSO, TBL_ALUNOS.ID_CURSO) Se esta for a sua dúvida o COALESCE, poderá te ajudar. Até mais.
14/01/2011
Paulo Freire
Seria mais ou menos isso, tenho um WebForm, onde tem um dropdownList chamado dpCursos, onde carrego dessa formas, no Page_Load:
private void CarregaIgrejas() { string stringConexao = ConfigurationManager.ConnectionStrings["Conexao"].ConnectionString; using (SqlConnection con = new SqlConnection(stringConexao)) { using (SqlCommand cmd = new SqlCommand("SELECT ID, CURSO FROM CURSOS ORDER BY CURSO", con)) { cmd.Connection.Open();
SqlDataReader drValues; drValues = cmd.ExecuteReader();
dpCursos.DataSource = drValues; dpCursos.DataValueField = "ID"; dpCursos.DataTextField = "CURSO"; dpCursos.DataBind();
cmd.Connection.Close(); cmd.Connection.Dispose(); } } }
Gostaria de ao Carregar esse DropDownList, carregasse assim:
<<TODOS>>MATEMATICAPORTUGUESHISTORIAGEOGRAFIA
Caso seja escolhido o paramentro todos eu poderia usar o COALESCE.
Muito grato
14/01/2011
Emerson Nascimento
suponho que você envie o próprio index do combobox. nesse caso sua procedure deveria ser assim:
CREATE PROCEDURE [escola].procAlunosPorCurso (
@CURSO SMALLINT
)
AS
SELECT TBL_ALUNOS.ID,
TBL_ALUNOS.NOME,
TBL_ALUNOS.DATA_NASC,
TBL_ALUNOS.ENDERECO,
TBL_ALUNOS.ID_CURSO,
TBL_CURSOS.NOME_CURSO
FROM TBL_ALUNOS
INNER JOIN TBL_CURSOS ON (TBL_CURSOS.ID = TBL_ALUNOS.ID_CURSO)
WHERE (@CURSO = 0 OR TBL_ALUNOS.ID_CURSO = @CURSO)
assim, ao selecionar TODOS você envia 0 (zero) para a procedure e tudo será listado. se o valor enviado for diferente de 0 (zero), serão listados somente aqueles registros cujo ID_CURSO seja igual ao valor enviado.
eu sugeri o valor 0 (zero) no cado de TODOS, mas você pode enviar -1 ou qualquer outro valor, desde que esse valor não esteja sendo usado num ID_CURSO.
17/01/2011
Paulo Freire
Clique aqui para fazer login e interagir na Comunidade :)