Конвертировать строку в арифметические операторы - PullRequest
0 голосов
/ 19 октября 2018

У меня есть уравнение, хранящееся в таблице, и я хочу, чтобы мой SQL возвращал вычисленное значение.

Например,

Select replace (c.equation, 'x', 121) 
  from config c where key= 2 

Вышеуказанное возвращает (8.5- (121-20) / 100)Мне нужно рассчитанное значение, т.е. 7,49

Я пробовал следующее, но не работает:

Select cast(replace (g.equation, 'x', 121) as double precision) 
  from config c where key= 2 

Любая идея, пожалуйста?

1 Ответ

0 голосов
/ 19 октября 2018

Как указано @Arioch, вы должны использовать ВЫПОЛНИТЬ ЗАЯВЛЕНИЕ .Чем просто положить уравнение в следующей процедуре CALCULATE

CREATE OR ALTER PROCEDURE calculate (equation VARCHAR(100))
RETURNS (result VARCHAR(10))
AS
begin
  EXECUTE STATEMENT ('SELECT ' || :EQUATION || ' FROM rdb$database')
  INTO :result;

  suspend;
end
...