none
Dúvida na passagem de parâmetros para function RRS feed

  • Pergunta

  • Tenho uma função com alguns parâmetros de entrada. Acontece, que numa query que fiz no meu sistema, essa função eu necessito fazer um Left Join com ela. Até aí beleza. O que passa é que na passagem do parâmetro, 3 parâmetros eu ainda não os tenho, pois eles seriam carregados a partir da query. Então eu os carreguei no join esses parãmetros, não na cláusula ON do Join, mas nos parâmetros e está dando erro.

    query.Append(" FROM RETORNO_ANALISE_CONTAS RAC WITH(NOLOCK) ");
                query.Append(" LEFT JOIN FX_RETORNA_PAGO_MAIOR(RAC.ID_ITEM,RAC.ID_CONTA,RAC.ID_LOTE,@COD_EMS,@ID_PRESTADOR)AS FX on FX.ID_ITEM = RAC.ID_ITEM ");

    Veja que RAC.ID_ITEM, RAC.ID_CONTA e RAC.ID_LOTE, são parâmetros que vem direto da query acima e dá erro. Como eu faço para carregar esses caras da RAC(Tabela do join com a função)?

    sexta-feira, 20 de dezembro de 2013 10:59

Respostas

  • Deleted
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:51
    sexta-feira, 20 de dezembro de 2013 11:10
  • Deleted
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:51
    sexta-feira, 20 de dezembro de 2013 12:01
  • Deleted
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:51
    sexta-feira, 20 de dezembro de 2013 13:20
  • pnet,

    Na verdade você pode utilizar o Cross Apply como Operador para junção de dados entre Select e Funciton!!!!

    SELECT DeptID, DeptName, DeptMgrID, EmpID, EmpLastName, EmpSalary
      FROM Departments d CROSS APPLY dbo.GetReports(d.DeptMgrID) ;

    As observações do José Diz, são regras necessárias para que o Plano de Execução seja capaz de realizar o processamento da query.


    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]

    • Sugerido como Resposta Giovani Cr segunda-feira, 23 de dezembro de 2013 13:02
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:51
    sexta-feira, 20 de dezembro de 2013 16:09
  • Deleted
    • Sugerido como Resposta Giovani Cr segunda-feira, 23 de dezembro de 2013 13:02
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:51
    sexta-feira, 20 de dezembro de 2013 16:18
  • José,

    Concordo utilizando uma função InLine ou Scalar este problema não ocorre, já em uma Multi-Statement como teremos um conjunto de linhas sendo retornadas teremos este problema.


    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]

    • Sugerido como Resposta Giovani Cr segunda-feira, 23 de dezembro de 2013 13:02
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:51
    sexta-feira, 20 de dezembro de 2013 16:31
  • Deleted
    • Sugerido como Resposta Giovani Cr segunda-feira, 23 de dezembro de 2013 13:02
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:50
    sexta-feira, 20 de dezembro de 2013 17:28
  • Deleted
    • Sugerido como Resposta Giovani Cr segunda-feira, 23 de dezembro de 2013 13:02
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:50
    sexta-feira, 20 de dezembro de 2013 23:26
  • Bom dia pnet,

    Caso alguma sugestão passada resolva seu problema não esqueça de marcar como resposta para fechar a sua Thread.

    Att,


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:50
    segunda-feira, 23 de dezembro de 2013 13:01

Todas as Respostas

  • Deleted
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:51
    sexta-feira, 20 de dezembro de 2013 11:10
  • Zé, não entendi nada do que você disse. Como eu faria isso no exemplo que enviei?
    sexta-feira, 20 de dezembro de 2013 11:14
  • Deleted
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:51
    sexta-feira, 20 de dezembro de 2013 12:01
  • Entendi, vou fazer isso, colocar a Função no Select e alterar para escalar. Hoje ela retorna uma Table.
    sexta-feira, 20 de dezembro de 2013 12:50
  • Deleted
    sexta-feira, 20 de dezembro de 2013 13:15
  • Deleted
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:51
    sexta-feira, 20 de dezembro de 2013 13:20
  • Então, escalar vai derrubar a performance, devido a cada item eu chamar a função. Isso significa em um universo de milhões ou milhares, já viu o pode acontecer. Vou tentar da outra forma.
    sexta-feira, 20 de dezembro de 2013 16:05
  • pnet,

    Na verdade você pode utilizar o Cross Apply como Operador para junção de dados entre Select e Funciton!!!!

    SELECT DeptID, DeptName, DeptMgrID, EmpID, EmpLastName, EmpSalary
      FROM Departments d CROSS APPLY dbo.GetReports(d.DeptMgrID) ;

    As observações do José Diz, são regras necessárias para que o Plano de Execução seja capaz de realizar o processamento da query.


    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]

    • Sugerido como Resposta Giovani Cr segunda-feira, 23 de dezembro de 2013 13:02
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:51
    sexta-feira, 20 de dezembro de 2013 16:09
  • Deleted
    • Sugerido como Resposta Giovani Cr segunda-feira, 23 de dezembro de 2013 13:02
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:51
    sexta-feira, 20 de dezembro de 2013 16:18
  • José,

    Concordo utilizando uma função InLine ou Scalar este problema não ocorre, já em uma Multi-Statement como teremos um conjunto de linhas sendo retornadas teremos este problema.


    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]

    • Sugerido como Resposta Giovani Cr segunda-feira, 23 de dezembro de 2013 13:02
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:51
    sexta-feira, 20 de dezembro de 2013 16:31
  • Deleted
    • Sugerido como Resposta Giovani Cr segunda-feira, 23 de dezembro de 2013 13:02
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:50
    sexta-feira, 20 de dezembro de 2013 17:28
  • Deleted
    • Sugerido como Resposta Giovani Cr segunda-feira, 23 de dezembro de 2013 13:02
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:50
    sexta-feira, 20 de dezembro de 2013 23:26
  • Bom dia pnet,

    Caso alguma sugestão passada resolva seu problema não esqueça de marcar como resposta para fechar a sua Thread.

    Att,


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:50
    segunda-feira, 23 de dezembro de 2013 13:01