|
|
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
Господа! Помогите плиз с сабджем! Причем чтоб ее можно было использовать во вью Существует ли в природе такое? если нет то может поможете с советом как такое возможно реализовать. Спасибо заранее всем откликнувшимся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2003, 19:55 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
А что передавать в эту функцию? В Аксессе я понимаю, всякие переменные и т.п. А в SQL-сервере что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2003, 20:28 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
во вью возможно использование пользовательских функций в пользовательскую функцию можно передать в качестве строки любое выражение если конечно это mssql 2000 или др. сервера с поддержкой функций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 09:00 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
Наверное, ValeRRR имел виду, чтобы он передал в функцию строку "1+2+5*10", а она ему вернула 53. Такого на сиквеле встроенной функции я не знаю. Прийдется клиентом данные готовить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 09:09 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2SV: Для этого конкретного случая с "1+2+5*10", в принципе, если очень нужно, можно сделать так: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 09:53 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2:Senin Viktor Да я именно это и имел ввиду. Поясни плиз свою мысль насчет того что клиент должен готовить данные. 2:IgorM Спасибки за код! скажи можно ли будет эту функцию использовать во вью? Я бы хотел использовать эту функцию во вью примерно так: select Function_From_IgorM('1+2+5*10') as [SomeColumn] естественно что вместо '1+2+5*10' я предполагаю использовать какой-нить столбец из таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 11:55 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
>Поясни плиз свою мысль насчет того что клиент должен готовить данные. Лучше проясни, что ты хочешь?С примерами. А то уже почему-то слово столбец по явилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 12:26 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2ValeRRR: В таком виде как у меня - нет, функцию написать не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 12:34 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2:Senin Viktor Вот так хочу написать во вью select Function_From_IgorM(tbl.Col1) as [SomeColumn] FROM tbl при этом сожержимое tbl: Col1 '1+2+5*10' 'GetDate()' 'bla-bla-bla' ну и т.п. 2:IgorM а в каком виде это могло бы заработать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 13:46 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
нарно execute(SElect column From ...) тоько надо проверить что салект вернет строку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 13:49 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2:фыыф >execute(SElect column From ...) это во вью так написать ты предлагаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 14:04 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
нарно в хранимой. А вот что делать во вью - надо посмотреть. (не писал на MS с 6.5, не помню.) Может вызывать хранимую? :) а вапше есть форум по SQL. Только там про Eval спрашивать не надо :). Надо сказать примерно так: "в таблице храню _текст процедуры_, который надо _исполнить_ бла-бла-бла из SQL конструкции, а именно во вью" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 14:28 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2:фыыф спасибо за совет. Сейчас еще там спрошу. но надеюсь что в этом топике мне тоже помогут! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 14:36 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
А еще лучше спросить так: хочу сделать ...... решил использовать .... как реализовать ... ? может быть есть более оптимальный метод? А то когда спрашивают как сделать ....? То это не всегда означает, что нет другого, более эффективного подхода. И вместо того, чтобы решать какие-то нестандартные особенности программирования, лучше поменять логику работы модуля и сделать все при помощи стандартных методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 14:42 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2ValeRRR: При таком широком диапазоне входящих параметров вряд ли получится написать что-то универсальное, работающее как функция, т.к. exec в том виде, в каком его использовал я, там не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 14:50 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2:фыыф, incold в соседнем форуме спросил как вы и советовали! так там меня в функцию Eval носом ткнули! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 15:17 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2 ValeRRR Вы уже пишете готовый способ - хранение формул в таблице и спрашиваете как его реализовать, но ни слова о том, какие цели преследуются (какая исходная постановка задачи). Может быть от такого подхода можно вообще отказаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 15:27 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2:incold а постановка задачи так и звучит. Нужно выполнить текст из столбца и вернуть его как значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 15:41 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2 ValeRRR Это не постановка задачи - это уже кем-то подсказанное решение. Пользователь(постановщик задачи) не может знать, что такое таблица и столбец. Если проявить телепатию, то можно предположить примерно так: пользователь желает где-то сохранять свои формулы, чтобы затем использовать их в расчетах чего-либо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 15:45 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2 incold ты прав. примерно так. только твоя формулировка более обощающая и абстрактная. сути то это не меняет. можно конечно же хранить эти формулы и не в таблицах, а в реестре, в файле, и т.п. и файл и реестр можно считать БД. но если есть более мощная система БД смысл тогда извращаться с другими средствами хранения данных? В данном случае мои данные это часть программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 15:52 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2 ValeRRR Дело не в месте хранения. Я помню обсуждение у соседей - там уже говорилось, что БД не предназначена для хранения формул. Формулы должны быть определены в логике работы системы. Мне пока что удается доказывать пользователям неэффективность таких подходов. Лучше сделать на форме/отчете настройку любого поля, которое будет считаться по формуле, чем писать в базу данных формулу, а потом каким-либо образом ее куда-то подставлять. Т.е. если сказать в общем, то в базе данных должны хранится данные, а формулы должны быть реализованы в интерфейсе/процедурах расчета/отчетах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 16:10 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2 incold не всегда получается так разделять данные и код иначе небыло бы смысла в существовании функции Eval в акцессе. да и вообще макроподстановки были еще в клипере. Дискутировать можно долго по поводу макроподстановок хорошо это или плохо, нужны или нет. Вот у меня есть конкретная проблема, которую я сам решить не в состоянии от недостатка знания предмета (TSQL) и мастерства. Поэтому и спрашиваю о том чего сам сделать не смог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 16:24 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
к сожалению во вью можно использовать только пользовательские функции а в функциях нельзя execute но в функциях можно использовать расширенные процедуры, недостатки этого метода - достаточно сложно - может нести опасность для сервера. - после переноса на другй сервак / новой инсталяции придется переносить и свои DLL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 16:52 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
2ValeRRR: расчетные формулы, да и getdate() и т.п. можно реализовать на T-SQL самостоятельным разбором строки. Вопрос в том, стоит ли в твоём случае такая овчинка выделки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 22:54 |
|
||
|
ф-ия Eval на SQL-сервере
|
|||
|---|---|---|---|
|
#18+
не всегда получается так разделять данные и код иначе небыло бы смысла в существовании функции Eval в акцессе Да вообще-то если убрать из аксеса функцию Eval - мало кто это заметит. Это я тебе как доктор говорю. Точно так же как и добавление функции CallByName мало кем замечено было. Слишком мал круг задач, где это может понадобится. А уж пересечение этого круга задач с базами данных - совсем мизерно. Что-то неладно в твоем датском королевстве, раз тебе такое понадобилось... (имхо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 23:05 |
|
||
|
|

start [/forum/topic.php?fid=45&tid=1677531]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 420ms |

| 0 / 0 |
