Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Расчет формулы записаной в строку  [new]
Stanislav
Member

Откуда: Донецк
Сообщений: 631
Здравствуйте, помогите решить следующую проблему, есть строка с простой формулой:
например '(5+1)/2', нужна функция которая вернет результат расчета.
Переменных никаких нет, только числа целые и с плавающей точкой.
Можно было бы сделать exec 'select (5+1)/2', но в функции из него результат немогу получить.

Mssql 2005.
22 июн 09, 11:37    [7327075]     Ответить | Цитировать Сообщить модератору
 Re: Расчет формулы записаной в строку  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
exec sp_sqlexecute 'select @t = (1+2) / 3', @t int output
?

для спящего время бодрствования равносильно сну
22 июн 09, 11:39    [7327093]     Ответить | Цитировать Сообщить модератору
 Re: Расчет формулы записаной в строку  [new]
Stanislav
Member

Откуда: Донецк
Сообщений: 631
Алексей2003
exec sp_sqlexecute 'select @t = (1+2) / 3', @t int output
?

для спящего время бодрствования равносильно сну



нашел sp_sqlexec
Пишет что нельзя использовать внутри функции...
22 июн 09, 11:50    [7327206]     Ответить | Цитировать Сообщить модератору
 Re: Расчет формулы записаной в строку  [new]
Fire83
Member

Откуда: Гомель-Минск
Сообщений: 474
?
declare @res int
exec sp_executesql N'select @t = (1+2) / 3', N'@t int output', @t = @res output
select @res
22 июн 09, 11:57    [7327264]     Ответить | Цитировать Сообщить модератору
 Re: Расчет формулы записаной в строку  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
автор, а можно чуть подробнее - зачем такое понадобилось?
я просто в своей жизни что-то не припомню, чтоб такое было нужно...
22 июн 09, 11:59    [7327282]     Ответить | Цитировать Сообщить модератору
 Re: Расчет формулы записаной в строку  [new]
Stanislav
Member

Откуда: Донецк
Сообщений: 631
Fire83
?
declare @res int
exec sp_executesql N'select @t = (1+2) / 3', N'@t int output', @t = @res output
select @res


Спасибо Работает, но из функции не вызывается. Пишет что только расширенных хп можно использовать внутри функции
22 июн 09, 12:01    [7327296]     Ответить | Цитировать Сообщить модератору
 Re: Расчет формулы записаной в строку  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2Паганель
наверна лениво писать свой калькулятор, с разбором строки :)

для спящего время бодрствования равносильно сну
22 июн 09, 12:03    [7327308]     Ответить | Цитировать Сообщить модератору
 Re: Расчет формулы записаной в строку  [new]
Fire83
Member

Откуда: Гомель-Минск
Сообщений: 474
В функцию вы вызов хранимки не запихнете, вот тут вашу проблему обсуждали:
https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=140974
22 июн 09, 12:03    [7327321]     Ответить | Цитировать Сообщить модератору
 Re: Расчет формулы записаной в строку  [new]
Stanislav
Member

Откуда: Донецк
Сообщений: 631
Паганель
автор, а можно чуть подробнее - зачем такое понадобилось?
я просто в своей жизни что-то не припомню, чтоб такое было нужно...

Юзера записывают формулы расчета, нужно посчитать, все переменные в формуле заменяются на необходимые цифры, а потом производится расчет. Желательно это все сделать в селекте, ну если уж никак, то буду хранимкой делать.
Можно конечно через линкед сервер выкрутится, но это криво ).
Либо написать на C# DLL.
Пока ищу мож кто знает как это проще сделать.
22 июн 09, 12:09    [7327369]     Ответить | Цитировать Сообщить модератору
 Re: Расчет формулы записаной в строку  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Stanislav
Юзера записывают формулы расчета, нужно посчитать,
все переменные в формуле заменяются на необходимые цифры,
а потом производится расчет
Непонятно почему этим "расчетом" должен сервер заниматься
Может, возложить это на клиента ?
22 июн 09, 12:15    [7327421]     Ответить | Цитировать Сообщить модератору
 Re: Расчет формулы записаной в строку  [new]
Stanislav
Member

Откуда: Донецк
Сообщений: 631
Паганель
Stanislav
Юзера записывают формулы расчета, нужно посчитать,
все переменные в формуле заменяются на необходимые цифры,
а потом производится расчет
Непонятно почему этим "расчетом" должен сервер заниматься
Может, возложить это на клиента ?


возможно, пока прорабатываю вариант сервера.
22 июн 09, 12:23    [7327486]     Ответить | Цитировать Сообщить модератору
 Re: Расчет формулы записаной в строку  [new]
Stanislav
Member

Откуда: Донецк
Сообщений: 631
Fire83
В функцию вы вызов хранимки не запихнете, вот тут вашу проблему обсуждали:
https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=140974

Спасибо, нашел, то что нужно.
22 июн 09, 12:24    [7327493]     Ответить | Цитировать Сообщить модератору
 Re: Расчет формулы записаной в строку  [new]
Antoshka
Member

Откуда:
Сообщений: 828
Stanislav
Переменных никаких нет, только числа целые и с плавающей точкой.
Можно было бы сделать exec 'select (5+1)/2', но в функции из него результат немогу получить.

Mssql 2005.


В 2005 можно написать CLR-функцию. На C# подобная задача решается довольно-таки тривиально.
22 июн 09, 21:56    [7330818]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить