| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 09:55:51
|
newbcc
JavaTeenager
![[Avatar]](/images/avatar/55250fc72f7d5e4c9c9108e38b1e94ec.jpg)
Membro desde: 13/12/2007 13:07:56
Mensagens: 172
Offline
|
Olá,
RenataFA, e se você removesse esses apostrófos quando fosse executar a tal fórmula!?
Antes de execução do cursor, você poderia fazer um tratamento desse VARCHAR para a remoção dos apostrófos!?
Não tentei fazer esse teste, mas como você está com a 'mão na massa' poderia testar para ver se funciona.
Abs!
|
"Educai as crianças, para que não seja necessário punir os adultos"
Pitágoras |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 09:57:45
|
drsmachado
GUJ Expert
Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline
|
RenataFA wrote:
E qto "aos que esquecem dos novatos precisando de respostas", eu nem vou falar nada. Afinal, vc nem me conhece, não tem culpa. E não preciso responder pq quem me conhece, me manda e-mail, me manda msg em private, etc, etc... sabe do que se precisa saber.
Tudo de acordo com as regras e objetivos do fórum, por sinal.
Assim o conhecimento se dissemina...
Fica complicado quando as coisas partem para esse lado.
Aí o pessoal reclama quando começam a mandar MP, adicionar no msn...
Quanto à tua dúvida, bem, a forma como a mesma foi colocada deixa margens para isto. Principalmente pelo fato de haver um SET. Ora, se está setando um valor arbitrário à uma variável declarada, ele pode ser qualquer valor, no meu entender.
Agora, quando esse valor vem de uma entidade externa (como parâmetro de entrada), aí sim, eu compreendo que não se pode modificá-lo.
Só peço que, encontrando uma resposta adequada, retorne e a coloque aqui, para que não seja preciso enviar MP com uma pergunta igual.
|
Rumo aos 4000
"Os homens de verdade assumem suas responsabilidades e culpas. Esquivar-se e dar desculpas é atitude dos tolos, que preferem não se comprometer".
Lugar de perguntar é no fórum!
Não respondo via MP
Não respondo por Email
Não respondo por IM |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 10:19:45
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
Muito tenso jaziel.rc! rs....
Então newbcc, juro que era o que eu queria. Mas não consigo pensar como! Pq assim, não são apóstrofos que eu inseri, são os apóstrofos que ele interpreta ao concatenar minha variável var_formula na instrução select.
Eu até (ridiculamente) tentei fazer um REPLACE tirando os ' mas claro que não funciona né... Como vc acha que eu podia fazer isso?
Alias, não precisa ser exatamente dessa forma. Já pensei em criar uma temporária, jogar o conteúdo, tentar pegar, etc, etc... mas sempre me deparo com os malditos apóstrofos! Eu só preciso interpretar a fórmula, não precisa nem ser usando select. Algum outro jeito?
Ah... e drsmachado? Pode deixar viu! Eu prometo! Deixa comigo!
|
[]'s, Renata |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 10:29:56
|
newbcc
JavaTeenager
![[Avatar]](/images/avatar/55250fc72f7d5e4c9c9108e38b1e94ec.jpg)
Membro desde: 13/12/2007 13:07:56
Mensagens: 172
Offline
|
Olá Renata,
eu não tenho alternativa, realmente a substituição não é válida e não faria sentido.
O quê eu estou pensando nesse momento é se existe a possibilidade de você, ao invés de usar essa expressão toda '10.00 - 4.50...', enviar o resultado direto dela para a sua função, pois assim você estaria trabalhando direto com o double.
Se você entendeu a minha intenção, é possível para você fazer essa implementação?
Abs!
|
"Educai as crianças, para que não seja necessário punir os adultos"
Pitágoras |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 10:31:45
|
drsmachado
GUJ Expert
Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline
|
Newbcc, foi o que sugeri desde o início, mas ela não tem como fazer isto.
|
Rumo aos 4000
"Os homens de verdade assumem suas responsabilidades e culpas. Esquivar-se e dar desculpas é atitude dos tolos, que preferem não se comprometer".
Lugar de perguntar é no fórum!
Não respondo via MP
Não respondo por Email
Não respondo por IM |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 10:49:13
|
newbcc
JavaTeenager
![[Avatar]](/images/avatar/55250fc72f7d5e4c9c9108e38b1e94ec.jpg)
Membro desde: 13/12/2007 13:07:56
Mensagens: 172
Offline
|
Opa,
fala drsmachado. Foi mal cara, não prestei atenção nas suas respostas. Erro meu!
Poxa Renata, realmente é um problema não trivial. Talvez se criasse esse mesmo post no MySQL Forums.
Mesmo assim, qualquer novidade tento novamente.
Abs!
|
"Educai as crianças, para que não seja necessário punir os adultos"
Pitágoras |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 10:49:41
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
newbcc wrote: Olá Renata,
eu não tenho alternativa, realmente a substituição não é válida e não faria sentido.
O quê eu estou pensando nesse momento é se existe a possibilidade de você, ao invés de usar essa expressão toda '10.00 - 4.50...', enviar o resultado direto dela para a sua função, pois assim você estaria trabalhando direto com o double.
Se você entendeu a minha intenção, é possível para você fazer essa implementação?
Abs!
Não tenho... veja só, minha função que monta a tal fórmula. O que chega pra minha função é uma fórmula assim por ex: "CAMPO1 + CAMPO2 / (CAMPO3 * CAMPO4) + CAMPO5 / CAMPO6 * 7 / 3.45"
Ou seja, chega uma fórmula qq.
Eu substituo nessas fórmulas cada um desses campos pelos valores que terei que usar e no final, chego a um varchar com a a expressão a ser resolvida. É a minha tal var_formula.
Tendeu?
Na verdade, o que eu queria era simplesmente macro-substituição. Os mais velhos sabem do que estou falando.
Seria por ex, igual qdo no iReport invés de usar $P usamos $P!, ou seja, invés de concatenar uma variável, concatenamos só o conteúdo dela.
Pensei que nos banco de dados teríamos algo similar.
|
[]'s, Renata |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2011 10:38:52
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
À todos os interessados no assunto... eis o desfecho:
A única forma de fazer o que preciso seria através do que o MySQL chama de SQL Dinâmico (Dynamic SQL), ou seja, colocar numa variável um varchar com o comando do select e depois executar essa variável. Igual fazemos no fonte do java.
Pra fazer isso usando MySQL, teria que ser da seguinte forma (seguindo o meu exemplinho de antes...):
O comando acima funciona bem, exceto por um detalhe: o MySQL, por suas limitações que eu não sei explicar o motivo, não permite o uso de SQLs dinâmicos em functions ou triggers. Ou seja, só pode ser usado em stored procedures.
Eu inclusive testei em SP e realmente funciona. Pra poder ver o resultado (já que SPs não retornam valor), eu invés de "select" usei um comando de "update" pra que fosse atualizado um campo de uma tabela e eu poder ver o resultado. E deu certo.
Porém, pra mim, uma SP no caso não serve pra nada. E nem vou ficar entrando em detalhes do pq já que não quero mais polêmicas nesse post.
Eu passei por muitos sites, dicas, tutoriais, etc, etc... não compensa listar tudo aqui e nem vou lembrar e achar todos.
Dois mais simples e resumidos que posso listar são: http://forums.mysql.com/read.php?60,27979,30437#msg-30437 e http://forums.mysql.com/read.php?10,398743,398743#msg-398743
Eu precisava fazer essa alteração pra mais de um BD, trabalho com MySQL, SQL Server e Oracle.
Pro MySQL o desfecho foi esse dai. Pro SQL Server, pelo que fui lendo enquanto pesquisava pro MySQL, parece ser totalmente possível e simples de ser feito (veja bem, eu disse que "parece", pq eu não testei). Já sobre o Oracle eu não encontrei nada (mas tb, eu não estava procurando né...).
Obrigada à todos que ajudaram.
Renata
|
[]'s, Renata |
|
|
 |
|
|
|
|