none
Dificuldades com Store Procedure RRS feed

  • Pergunta

  • Estou com a Seguinte Dificuldade em Criar Minha Procedure EX:

    Contem a seguinte estrutura:

    USE

     

    [Pro_banco]

    GO

    /****** Object: StoredProcedure [dbo].[SelectAllQuestao] Script Date: 11/27/2010 13:54:20 ******/

    SET

     

    ANSI_NULLS ON

    GO

    SET

     

    QUOTED_IDENTIFIER ON

    GO

    -- =============================================

    -- Author: <Victor, Gomes>

    -- Create date: <27/11/2010>

    -- Description: <Procedure que seleciona todos os dados de Questo>

    -- =============================================

    ALTER

     

    PROCEDURE [dbo].[SelectAllQuestao]

    (

     

    @Id_Disciplina

     

    Int,

    @Id_Dificuldade

     

    Int,

    @Id_Assunto

     

    Int

    )

    AS

     

    SELECT disciplina.id, disciplina.nome,

     

    nivel_dificuldade.descricao,

     

    questao.pergunta FROM questao

     

    JOIN assunto on (questao.id_assunto = assunto.id)

     

    JOIN disciplina on (assunto.id_disciplina = disciplina.id)

     

    JOIN nivel_dificuldade ON (questao.id_nivel_dificuldade = nivel_dificuldade.id)

     

    WHERE 1=1

     

    AND disciplina.id = @Id_Disciplina

     

    AND questao.id_assunto = @Id_Assunto

     

    AND questao.id_nivel_dificuldade = @Id_Dificuldade

    A minha pergunta é tem como ele me retornar algum valor sem eu ter que dizer a ela todos os valores Exemplo: execute SelectAllQuestao @Id_Disciplina = 1

    ou então execute SelectAllQuestao para ele me retornar todas ? porque desse jeito ele da erro eu tenho que dizer todas. Muito Obrigado pela ajuda desde já um grande abraço a todos.

    sábado, 27 de novembro de 2010 17:06

Respostas

  • Olá Amigo Junior consegui fazer assim,
    ALTER PROCEDURE [dbo].[SelectAllQuestao]
    @Pergunta varchar(2000),
    @Id_Assunto int,
    @Id_Disciplina int,
    @Nivel int
    AS
    
    
    SELECT disciplina.id as disc_id, disciplina.nome AS disc_nome,
    		  nivel_dificuldade.descricao as nivel_nome, 
    		  questao.pergunta, questao.id as id_questao, assunto.nome as assun_nome, assunto.id as assun_id FROM questao 
    		  JOIN assunto on (questao.id_assunto = assunto.id) 
    		  JOIN disciplina on (assunto.id_disciplina = disciplina.id) 
    		  JOIN nivel_dificuldade ON (questao.id_nivel_dificuldade = nivel_dificuldade.id) 
    		  WHERE (1=1 AND @Id_Assunto IS NULL OR questao.id_assunto = @Id_Assunto) 
    		  AND (@Id_Disciplina IS NULL OR disciplina.id = @Id_Disciplina)
    		  AND (@Pergunta IS NULL OR questao.pergunta like '%'+@Pergunta+'%')
    		  AND (@Nivel IS NULL OR questao.id_nivel_dificuldade = @Nivel) 
      
    ai funcionou blz. agora estou com problemas com checkboxlist :( mais é um outro assunto obrigado amigos.
    • Marcado como Resposta Victor Dekolá terça-feira, 30 de novembro de 2010 18:26
    terça-feira, 30 de novembro de 2010 16:47

Todas as Respostas

  • Victor,

    Você deseja utilizar parâmetros que possam aceitara valores nulos?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    sábado, 27 de novembro de 2010 23:45
  • Olá Amigo Junior consegui fazer assim,
    ALTER PROCEDURE [dbo].[SelectAllQuestao]
    @Pergunta varchar(2000),
    @Id_Assunto int,
    @Id_Disciplina int,
    @Nivel int
    AS
    
    
    SELECT disciplina.id as disc_id, disciplina.nome AS disc_nome,
    		  nivel_dificuldade.descricao as nivel_nome, 
    		  questao.pergunta, questao.id as id_questao, assunto.nome as assun_nome, assunto.id as assun_id FROM questao 
    		  JOIN assunto on (questao.id_assunto = assunto.id) 
    		  JOIN disciplina on (assunto.id_disciplina = disciplina.id) 
    		  JOIN nivel_dificuldade ON (questao.id_nivel_dificuldade = nivel_dificuldade.id) 
    		  WHERE (1=1 AND @Id_Assunto IS NULL OR questao.id_assunto = @Id_Assunto) 
    		  AND (@Id_Disciplina IS NULL OR disciplina.id = @Id_Disciplina)
    		  AND (@Pergunta IS NULL OR questao.pergunta like '%'+@Pergunta+'%')
    		  AND (@Nivel IS NULL OR questao.id_nivel_dificuldade = @Nivel) 
      
    ai funcionou blz. agora estou com problemas com checkboxlist :( mais é um outro assunto obrigado amigos.
    • Marcado como Resposta Victor Dekolá terça-feira, 30 de novembro de 2010 18:26
    terça-feira, 30 de novembro de 2010 16:47
  • Victor,

    Obrigado pelo retorno, que bom que deu certo.

     


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    terça-feira, 30 de novembro de 2010 18:23