none
Passar parametro function RRS feed

  • Pergunta

  • Pessoal, procurei uma solução p/ meu problema na net mas nao achei, espero que vocês possam me ajudar Smile

     

    Faço um Select em uma Func(), ela vai retornar uma tabela, ai com o resultado preciso inserir mais uma coluna, que é o resultado de outra Func() , mas ai o bixo pega, o parametro da segunda Func() é o valor de uma coluna da primeira func.Se fosse um valor fixo na segunda Func nao teria problema nenhum(ja testei), mas qdo tento colocar uma coluna d aprimer func...ferrou.

     

    Exemplo:

     

    Assim funciona perfeitamente:

    Select abc.*,
    (Select top 1 [Cash Delta] from FCN_Cal_Valor_Delta_OPT(1339,1000,'20070704') )aaa
    from Fcn_Calcula_Posicao(4,'20070625','20070704',5)abc
    Where [Id Portfolio] = 5

    Mas qdo troco os valores por variaveis ele da um erro de Syntax

     

    Select abc.*,
    (Select top 1 [Cash Delta] from FCN_Cal_Valor_Delta_OPT(1339,abc.Position,'20070704') )as delta
    from Fcn_Calcula_Posicao(4,'20070625','20070704',5)abc
    Where [Id Portfolio] = 5

     

    Alguem pode me ajudar?

     

    Valew!

    quarta-feira, 4 de julho de 2007 19:25

Respostas

  •  

    PDH,

     

    Vamos ver se funciona assim:

    Code Snippet

     

    Select abc.*, dbo.FCN_Cal_Valor_Delta_OPT(1339,abc.Position,'20070704') as delta

    from Fcn_Calcula_Posicao(4,'20070625','20070704',5)abc

    Where [Id Portfolio] = 5

     

     

     Abraço

    quarta-feira, 4 de julho de 2007 20:28

Todas as Respostas

  •  

    PDH,

     

    Vamos ver se funciona assim:

    Code Snippet

     

    Select abc.*, dbo.FCN_Cal_Valor_Delta_OPT(1339,abc.Position,'20070704') as delta

    from Fcn_Calcula_Posicao(4,'20070625','20070704',5)abc

    Where [Id Portfolio] = 5

     

     

     Abraço

    quarta-feira, 4 de julho de 2007 20:28
  • PDH,

     

    Neste caso você deve fazer um select alinha com as funções, ou seja, colocar as funções dentro do select, mas não com se fosse sub-query.

     

    O exemplo do Alexandre ilustra muito bem isso!!!

    quinta-feira, 5 de julho de 2007 10:16
  • Fiz igual ao exemplo e da um erro de 

     

    Select abc.*, dbo.FCN_Cal_Valor_Delta_OPT(1339,abc.Position,'20070704') as delta
    from Fcn_Calcula_Posicao(4,'20070625','20070704',5)abc
    Where [Id Portfolio] = 5


    "Invalid object name 'dbo.FCN_Cal_Valor_Delta_OPT'."

     

    mesmo substituindo a variavel por um valor fixo o erro persiste.

     

     

    sexta-feira, 6 de julho de 2007 18:05
  •  

    PDH,

     

    Você está executando na database correta? Além disso, criou a função na database que está executando?

     

     

    Abraço

    sexta-feira, 6 de julho de 2007 19:11
  • Claro,

     

    qdo dou um select normal na função ela retorna os dados, somente qdo faço igual ao exemplo que da este erro.

     

     

    sexta-feira, 6 de julho de 2007 21:08
  • PDH,

    vc tem um limite de colunas que serão criadas na tabela?

    O SQL Server tem um limite para o número de colunas de cada tabela. Não sei qual é sua versão, mas no 2005 o limite é 1024 colunas por tabela e o tamanho máximo de cada linha é 8060 bytes.
    sexta-feira, 6 de julho de 2007 21:57
  •  

    PDH,

     

    Seu problema deve ser que a procedure que você criou retorna um valor de tabela. Neste caso, não terá como usar dentro de um SELECT, apenas se fosse um sub-query (igual seu primeiro exemplo) retornando apenas um valor.

     

    Agora, se a função retornar apenas um valor, tem de funcionar perfeitamente.

     

    Terias como postar o código pra procedure? Assim podemos lhe ajudar.

     

     

    Abraço

    sábado, 7 de julho de 2007 06:43
  • Então, ele retorna uma tabela com 1 linha e 1 coluna.

     

    Se eu uso parametros fixos, eu faço uma sub tranquilo, mas se boto como parametro 1 campo da query principal da erro.

     

    terça-feira, 10 de julho de 2007 18:18
  •  

    Olá PDH,

     

    Assim não está funcionando? Veja:

     

    Select abc.*, (SELECT TOP 1 [Cash Delta] FROM dbo.FCN_Cal_Valor_Delta_OPT(1339,abc.Position,'20070704')) as delta

    from Fcn_Calcula_Posicao(4,'20070625','20070704',5)abc

    Where [Id Portfolio] = 5

     

    Vou criar um exemplo mais completo e depois eu posto aqui.

     

     

    Abraço

    terça-feira, 10 de julho de 2007 18:41
  • Olha Só

     

    Assim funciona

     

    Select abc.*,(select top 1 [Cash Delta] from FCN_Cal_Valor_Delta_OPT(1339,1000,'20070706')) as delta
    from Fcn_Calcula_Posicao(4,'20070625','20070706',5) abc
    Where [Id Portfolio] = 5 order by [Ticker Type],Ticker

     

     

    Assim não funciona

     

     

    Select abc.*,(select top 1 [Cash Delta] from FCN_Cal_Valor_Delta_OPT(1339,abc.Position,'20070706')) as delta
    from Fcn_Calcula_Posicao(4,'20070625','20070706',5) abc
    Where [Id Portfolio] = 5 order by [Ticker Type],Ticker

    terça-feira, 10 de julho de 2007 19:03
  •  

    PDH,

     

    Montei um teste aqui exatamente como você está usando e funcionou!

     

    Você se importa de mandar o código das funções?? Se não quiser postar aqui, me mande por email que vejo pra ti.

     

     

    Abraço

    terça-feira, 10 de julho de 2007 19:40
  • E ae Alexandre consegui, mudei o return, ao inves de retornar uma tabela com 1 linha e 1 coluna, botei p/ retornar um decimal, ae funcionou certim

     

    Select abc.*,
    case when [Id Ticker Type] = 7 then
    dbo.FCN_Cal_Valor_Delta_OPT_VALOR(abc.[Id Ticker],abc.Position,'20070706')
    else Cash end as [Delta Cash]
    from Fcn_Calcula_Posicao(4,'20070625','20070706',5) abc
    Where [Id Portfolio] = 5 order by [Ticker Type],Ticker

    Valew!!!!

     

    Abs

    terça-feira, 10 de julho de 2007 20:49
  •  

    Legal PDH!

     

    Qualquer coisa estamos aqui.

     

    Abraço

    terça-feira, 10 de julho de 2007 22:23