2011-09-07 2 views
3

기능를 저장 내가 가진 :MySQL 내부에 간단한 수학 공식을 계산하려면 어떻게해야합니까? 내 내부

formula := "(10+10 * 1000)/12"; 

(간단한 수학 공식 만, 동적으로 문자열로 생성 된 번호)

가 어떻게이 평가 후면, 그리고 결과를 반환합니까?

EXECUTE (저장 함수 내에서는 가능하지 않음)를 사용할 수 없으며 저장 프로 시저를 만들고 저장 함수에서 호출하면 "동적 SQL이 저장 함수 또는 트리거에 허용되지 않습니다"라는 메시지가 나타납니다. 함수 내부에 직접 평가할 수 있습니다. SELECT 문 내부에서 호출해야하기 때문에 프로 시저가 아닌 저장 함수가 필요합니다.

답변

0

분명히 해결책이 없습니다. PHP에서 "paintfull"해결 방법을 적용했습니다. 문제의 주제가 아니기 때문에 여기서는 표시하지 않습니다.

0

수식을 사용하여 무엇을 사는지 알 수 없습니다. 저장 프로 시저를 작성하는 경우 수식을 입력하고 문자열을 잊어 버리십시오.

계산 된 수식이 호출에서 호출로 변경되어야하는 동적 프로 시저를 저장 프로 시저로 만드는 것은 좋지 않을 것이라고 생각합니다.

필연적 인 경우 파서를 작성하여 해당 문자열을 해당 구성 요소로 분해하고 구문 분석 트리를 만든 다음 트리를보고 평가할 수 있습니다. 사소한 문제는 아닙니다. 나는 이것을 재고 할 것이다.

+1

수식은 db의 keps입니다. 수식을 입력 할 수는 없습니다 ... 구문 분석 트리를 만드는 것은 실제로 MySQL 기능과 같이 사소한 것이 아닙니다. – Catalin

+0

제 의견으로는 잘못된 디자인입니다. 어쩌면 당신은 미들 티어에 그 기능을 넣는 것에 대해 생각해야 할 것입니다. – duffymo

+1

나쁜 디자인은 아니지만 필요한 것 : – Catalin