none
nomear resultado de um select em uma stored procedure RRS feed

  • Pergunta

  • Olá pessoal.

    Tenha um dúvida que é a seguinte, como eu faço para dar um 'nome' para um determinado resultado de um select que eu faço na minha stored procedure?

    Por exemplo, eu quero retornar multiplos 'selects' na minha stored procedure, e gostaria de nomear as 'tables' que são retornadas:

    select 1 (atrasado)

    select 2 (falta 1 dia)

    select 3 (falta 5 dias)

     

    Desde já agradeço a atenção.

     

    Att.,

    Eduardo.

    quinta-feira, 26 de maio de 2011 00:31

Respostas

  • Eduardo,

     

    Não, veja bem, se voce vai montar um dataset em sua aplicação, e todos os selects que voce quer dentro deste mesmo dataset, crie uma view com esses selects e utilize o UNION [ALL], mas lembre-se que para utiliza-lo o numero de colunas e o datatype deve ser o mesmo.

     

    Se voce quer jogar em N dataset, crie varias views, cada uma com o select esperado, e chame-as conforme sua necessidade.


    Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com
    • Sugerido como Resposta Eder Costa segunda-feira, 30 de maio de 2011 18:58
    • Marcado como Resposta Eder Costa quarta-feira, 1 de junho de 2011 17:47
    quinta-feira, 26 de maio de 2011 17:59
    Moderador
  • Eduardo, o funcionamento é diferente.

    Se os Select's que você quer montar não tem nada a ver um com outro, você terá que jogar o resultado desses Selects em DataSet's diferentes.

    Se o seu DataSet tiver propriedade destinada para isso, ou se puder usar um outro componente como "ponte", você pode utilizar o Select diretamente nele (no DataSet). Ou se preferir, pode criar uma view para cada Select, conforme exemplo:

    Create View vw_Teste as

    Select

      E.EmployeeID,

      E.BirthDate,

      EA.AddressID

    From

      HumanResources.Employee E Join HumanResources.EmployeeAddress EA on (EA.EmployeeID = E.EmployeeID)

    Where

      (MONTH(E.BirthDate) = 5)

     

    Select * From vw_Teste

     

    Esta view que criei selecionará todos os empregados que fazem aniversário em maio, com seus respectivos endereços e data de nascimento. É assim que funciona. Então, o seu DataSet estaria ligado ao "Select * From vw_Teste".

    Agora, se os seus Select's tiverem ligação um com o outro, talvez seja possível construirmos até mesmo um Select apenas, ao invés de termos vários.

    Se você ainda não tiver entendido, não tem problema, mas post mais informações para que possamos ser mais claros. Informe literalmente, por exemplo, quais são os Selects reais que você pensa em fazer. Informe também a estrutura das tabelas envolvidas nestes Selects.


    Roberson Ferreira


    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Sugerido como Resposta Eder Costa segunda-feira, 30 de maio de 2011 18:58
    • Marcado como Resposta Eder Costa quarta-feira, 1 de junho de 2011 17:47
    quinta-feira, 26 de maio de 2011 21:43
    Moderador

Todas as Respostas

  • vc pode nomear os campos da tabela

     

    por exemplo

    Select Cod as [Codigo], Nom as [ Nome do Cliente]

     

    dessa forma vc renomeia os campos que estao aparecendo ai vc vai olhar e saber de qual select esta sendo feito


    Analista Desenvolvedor
    quinta-feira, 26 de maio de 2011 00:50
  • Opa Daniel, vlw pela resposta.

     

    Mas, não tem como eu nomear este select, como se fosse um nome de uma tabela?

     

    Eduardo.

    quinta-feira, 26 de maio de 2011 11:16
  • Eduardo, mas qual a finalidade da sua necessidade? Dependendo do que for, pode ser uma CTE, tabelas temporárias, ou simplesmente não ser possivel.
    Tks. Fausto Fiorese Branco MCTS, MCITP/DBA 2005 | MCITP/DBA 2008 São Paulo - Brasil * http://www.linkedin.com/in/faustobranco
    • Sugerido como Resposta Eder Costa segunda-feira, 30 de maio de 2011 18:59
    quinta-feira, 26 de maio de 2011 11:28
  • Eduardo,

     

    Eu concordo com o Fausto, veja bem, quando voce executar a procedure, ela simplismente trata todos os resultados de todos os selects contidos na mesma, não é possivel selecionar qual trazer ou qual não trazer.

    Até onde eu entendi, voce teria uma procedure com todos os selects e ia selecionado certos selects para certos casos, é isso mesmo? bom, se sim, o uso de view é mais indicado e voce tera mais performance pois se trata apenas de um select e não de varios, alem de poder contar com indexed views e schemabinding que são recursos interessantes para uma view.


    Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com
    quinta-feira, 26 de maio de 2011 11:36
    Moderador
  • Assim como nossos companheiros nao vejo a necessidade disso, se for o caso crie uma view e nomeie a view conforme vc quiser

     

    Abraço


    Analista Desenvolvedor
    quinta-feira, 26 de maio de 2011 13:23
  • O que eu queria era "nomear" as tables (resultados) que vão vir do banco e eu vou jogar num dataset. Mas pelo jeito não é possível não é?

     

     


    quinta-feira, 26 de maio de 2011 17:43
  • Eduardo,

     

    Não, veja bem, se voce vai montar um dataset em sua aplicação, e todos os selects que voce quer dentro deste mesmo dataset, crie uma view com esses selects e utilize o UNION [ALL], mas lembre-se que para utiliza-lo o numero de colunas e o datatype deve ser o mesmo.

     

    Se voce quer jogar em N dataset, crie varias views, cada uma com o select esperado, e chame-as conforme sua necessidade.


    Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com
    • Sugerido como Resposta Eder Costa segunda-feira, 30 de maio de 2011 18:58
    • Marcado como Resposta Eder Costa quarta-feira, 1 de junho de 2011 17:47
    quinta-feira, 26 de maio de 2011 17:59
    Moderador
  • Eduardo, o funcionamento é diferente.

    Se os Select's que você quer montar não tem nada a ver um com outro, você terá que jogar o resultado desses Selects em DataSet's diferentes.

    Se o seu DataSet tiver propriedade destinada para isso, ou se puder usar um outro componente como "ponte", você pode utilizar o Select diretamente nele (no DataSet). Ou se preferir, pode criar uma view para cada Select, conforme exemplo:

    Create View vw_Teste as

    Select

      E.EmployeeID,

      E.BirthDate,

      EA.AddressID

    From

      HumanResources.Employee E Join HumanResources.EmployeeAddress EA on (EA.EmployeeID = E.EmployeeID)

    Where

      (MONTH(E.BirthDate) = 5)

     

    Select * From vw_Teste

     

    Esta view que criei selecionará todos os empregados que fazem aniversário em maio, com seus respectivos endereços e data de nascimento. É assim que funciona. Então, o seu DataSet estaria ligado ao "Select * From vw_Teste".

    Agora, se os seus Select's tiverem ligação um com o outro, talvez seja possível construirmos até mesmo um Select apenas, ao invés de termos vários.

    Se você ainda não tiver entendido, não tem problema, mas post mais informações para que possamos ser mais claros. Informe literalmente, por exemplo, quais são os Selects reais que você pensa em fazer. Informe também a estrutura das tabelas envolvidas nestes Selects.


    Roberson Ferreira


    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Sugerido como Resposta Eder Costa segunda-feira, 30 de maio de 2011 18:58
    • Marcado como Resposta Eder Costa quarta-feira, 1 de junho de 2011 17:47
    quinta-feira, 26 de maio de 2011 21:43
    Moderador