| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 07:58:31
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
Bom dia,
Tenho uma function no MySQL onde no começo dela, entre outras coisas, tenho as declarações:
Num dado momento, depois de várias substituições, etc, etc.. a minha var_formula fica com um conteúdo mais ou menos assim (claro que, cada vez que dependendo da fórmula é o conteúdo, mas um exemplo):
var_formula = '(10.00-4.50)*30/100'
E ai, eu gostaria que ao abrir o meu cursor, ele resolvesse essa expressão, então faço isso:
A execução dá erro, esse erro:
Incorrect decimal value: '' for column '' at row -1
Eu entendi o que está acontecendo, na verdade, qdo mando abrir o cursor, ele tá fazendo isso:
Quando o que eu queria era que ele fizesse isso:
Perceberam a sutileza dos MALDITOS apóstrofos?!
Enfim, eu entendi o que acontece, mas não estou achando forma de resolver. Alguém sabe como faço pra que ele substitua minha var_formula no select invés de usar como um valor varchar?
Se tiver algum ex clippeiro de plantão, pra resumir, eu diria que preciso de macro-substituição. Mas como?!
Grata,
Renata
This message was edited 3 times. Last update was at 13/05/2011 10:39:16
|
[]'s, Renata |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 08:26:25
|
drsmachado
GUJ Expert
Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline
|
Não seria mais simples tratar a fórmula diretamente na function e retornar um bigdecimal?
|
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 08:29:07
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
drsmachado wrote:Não seria mais simples tratar a fórmula diretamente na function e retornar um bigdecimal?
É justamente o que eu estou tentando fazer.
|
[]'s, Renata |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 08:31:56
|
drsmachado
GUJ Expert
Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline
|
Bem, a primeira coisa a fazer é alterar o tipo de retorno.
A segunda, é criar, dentro da function, uma forma de resolver a fórmula.
Se você puder postar a function...
|
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 08:46:41
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
drsmachado wrote:Bem, a primeira coisa a fazer é alterar o tipo de retorno.
A segunda, é criar, dentro da function, uma forma de resolver a fórmula.
Se você puder postar a function...
O tipo do retorno já é um decimal(13,3), não preciso alterá-lo, como vc pode ver nas declarações que postei:
Qto a segunda coisa, é exatamente por causa disso que postei aqui. Como fazer?
Sobre postar a function, o que interessa da function para demonstrar/resolver o problema eu já postei. É só juntar as partes. Vou colocar denovo o que já coloquei, desta vez tudo junto pra vc entender:
|
[]'s, Renata |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 08:56:50
|
drsmachado
GUJ Expert
Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline
|
Tenta alterar o SET para
|
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 08:58:48
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
drsmachado wrote:Tenta alterar o SET para
Amigo, é óbvio que isso não funcionará.
Por favor, alguém tem alguma idéia?
|
[]'s, Renata |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 09:01:10
|
drsmachado
GUJ Expert
Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline
|
Testou?
Senão, vai lá no prompt do mysql, entra com usuário e senha e executa este comando
e verifica qual a saída.
Ela será a mesma para a tua funçãozinha
|
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 09:06:25
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
drsmachado wrote:Testou?
Senão, vai lá no prompt do mysql, entra com usuário e senha e executa este comando
e verifica qual a saída.
Ela será a mesma para a tua funçãozinha
Eu sei! Mas eu não tenho o conteúdo dessa forma. Como já falei, minha fórmula está dentro de um VARCHAR, então tem apóstrofos.
E nem que eu tivesse, o comando:
Nem compila a function no MySQL pq essa sintaxe não existe!
E vc? TESTOU na function que eu passei antes de postar?!
Amigo, vc não está entendendo o problema e está indo pra algo que não tem nada haver...
|
[]'s, Renata |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 09:14:52
|
drsmachado
GUJ Expert
Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline
|
mysql> select func_guj();
+------------+
| func_guj() |
+------------+
| 1.650 |
+------------+
1 row in set (0.05 sec)
|
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 09:27:23
|
jaziel.rc
JavaChild
Membro desde: 19/08/2010 12:02:02
Mensagens: 141
Offline
|
Ia responder praticamente a mesma coisa que o drsmachado colocou.
Primeiro compila e funciona sim a proc como ele colocou.
Segundo, uma educação ajuda bastante, o cara vem ajudar com boa vontade, pode estar em N situações (dando um tempo do trabalho, acabou de acordar, etc...) e pode não ter entendido como tu queria ou como ACREDITA que se expressou, um pouco de bom senso sempre é bem vindo, mesmo para as próximas respostas se necessárias.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 09:28:02
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
drsmachado wrote:
mysql> select func_guj();
+------------+
| func_guj() |
+------------+
| 1.650 |
+------------+
1 row in set (0.05 sec)
Amigo, vou tentar denovo te explicar, eu não tenho a expressão! Ela está dentro de um VARCHAR, então tem APÓSTROFOS. Do jeito que vc fez claro que funciona, mas eu não tenho isso ai! Por isso estou dizendo que vc não está entendendo. Vc fez isso:
Mas o que eu tenho é isso:
Entendeu agora pq não funciona? Sei bem que ngn é obrigado a responder. E páre de se fazer de ofendido, eu apenas tentei te mostrar que não é isso, páre de se gastar que não é isso.
E não se preocupe, estou aqui há mais tempo que vc e não faço perguntas que eu não tenha pesquisado antes. A prova de que minha dúvida não é simples e encontrável em uma pesquisa qualquer é que ngn até agora se manifestou pra resolvê-la.
Depois me perguntam pq eu fico tempos sem aparecer no GUJ. Realmente... isso aqui não é mais o que era antes...
|
[]'s, Renata |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 09:37:15
|
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:
Sobre postar a function, o que interessa da function para demonstrar/resolver o problema eu já postei. É só juntar as partes. Vou colocar denovo o que já coloquei, desta vez tudo junto pra vc entender:
Realmente, não havia "tudo o que interessa da function".
A única solução que vejo para isto é desmembrar o parâmetro e montar a consulta dinamicamente.
Vai dar muito mais trabalho, mas pode funcionar.
E não, isso aqui não é mais como era antigamente, faltam pessoas que conheceram isto aqui desde o seu começo, faltam pessoas com interesse em responder e não apenas colocar discussões sobre esta ou aquela empresa, sobre isto ou aquilo, faltam pessoas que ajudem a elevar o nível das respostas aqui.
Afinal, os mais "antigos" sempre esquecem que existem novatos precisando de respostas...
|
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 09:50:54
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
drsmachado wrote:
RenataFA wrote:
Sobre postar a function, o que interessa da function para demonstrar/resolver o problema eu já postei. É só juntar as partes. Vou colocar denovo o que já coloquei, desta vez tudo junto pra vc entender:
Realmente, não havia "tudo o que interessa da function".
A única solução que vejo para isto é desmembrar o parâmetro e montar a consulta dinamicamente.
Vai dar muito mais trabalho, mas pode funcionar.
E não, isso aqui não é mais como era antigamente, faltam pessoas que conheceram isto aqui desde o seu começo, faltam pessoas com interesse em responder e não apenas colocar discussões sobre esta ou aquela empresa, sobre isto ou aquilo, faltam pessoas que ajudem a elevar o nível das respostas aqui.
Afinal, os mais "antigos" sempre esquecem que existem novatos precisando de respostas...
rs... Aha! Agora vc releu e viu que não tinha nada haver né? E vai falar que eu não tinha dito tudo? rs... ok ok... que seja, se isso te deixa menos magoado, pra mim não muda nada.
Vc tem total razão! Faltam msm pessoas pra ajudar a elevar o nível de respostas, concordo plenamente. E tenho a sensação de que cada dia vão faltar mais!
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.
Só achei feio vc ser tão apelativo. Mas cada um é cada um né?
A gente tenta explicar uma dúvida, e arranja um inimigo. Ruim isso.
Qto a minha dúvida, deixa pra lá. Vou tentar em outro lugar, aqui não dá mais, ngn mais vai responder.
Obrigada à todos e aos moderadores: podem fechar o tópico, não serviu pra nada msm.
Grata,
Renata
|
[]'s, Renata |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2011 09:54:35
|
jaziel.rc
JavaChild
Membro desde: 19/08/2010 12:02:02
Mensagens: 141
Offline
|
???
Tá tenso isso...
|
|
|
 |
|
|