Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.18;
Скачать: CL | DM;

Вниз

Вызов функции из запроса   Найти похожие ветки 

 
Delpr ©   (2007-10-28 01:16) [0]

Здравствуйте, уважаемые мастера!
Проблема в следующем. В теле запроса вызывается хранимая функция (СУБД SQL Server 2000), которой в качестве одного из параметров передается значение поля выборки. Никак не хочет работать! Все ругается на точку (tb.field1) Может кто сталкивался, буду рад советам. Ниже сам запрос:

select
tb.Field1  as [Name1],
tb.Field2  as [Name2],
(select Field From dbo.MyFunction(tb.Field1, "01 jan 2007")) as [Name3]
From  tb


 
sniknik ©   (2007-10-28 01:40) [1]

> Может кто сталкивался
вряд ли... мало кто такой бред может выдумать...

функция это функция, а не таблица чтоб из нее from делать, она возвращает результат, значение, и в зависимости от того что она возвращает действия:
если единичное значение то просто подстановка его в нужном месте  
если рекордсет то обьеденение его с общим запросом, по какомуто общему(ключевому) полю
если имя таблицы то составление динамического запроса с его участием в from и последующим выполнением
но не так как у тебя подзапрос из функции... это чтото аналогичное ремонту машины по фотографии. (или я вообще не понимаю логику того что ты привел... словами обьяснить можеш? что это у тебя делается)


 
Delpr ©   (2007-10-28 01:53) [2]

Честно говоря, про бред я не совсем понял. Функция возвращает таблицу, состоящую из 2 полей, запись всегда одна. Применяется во многих местах, поэтому вынесена в качестве функции. Если вместо первого параметра в запросе подставлять конкретное число, то все работает. Что делается? Есть таблица людей, таблица покупок. Так вот надо в одно поле загнать все покупки, т.е. |Иванов|Книга, ручка, тетрадь| и т.д. Так вот функция и выполняет конкатенацию значения определенного поля по указанному коду человека. Второе поле результата используется под сумму всех покупок. Ну вот так. Езе раз подчеркиваю, что желательно это сделать через функцию.


 
sniknik ©   (2007-10-28 02:18) [3]

> что желательно это сделать через функцию.
раз желательно то так и делай

> про бред я не совсем понял.
в запросе в выражении from ... может стоять только имя таблицы источника, не параметр не строка/переменная, не и т.д.

при дополнительных исходных данных, еще немного "бредовости"
> Функция возвращает таблицу, состоящую из 2 полей, запись всегда одна.
запись всегда одна, используется одно поле, а возвращается почемуто таблица (на самом рекордсет (т.е. вариант 2 в [1]) )... ресурсов не жалко?


 
sniknik ©   (2007-10-28 02:21) [4]

> может стоять только имя таблицы источника
сорри, отправил и вспомнил... есть исключение - может быть еще подзапрос.


 
Johnmen ©   (2007-10-28 02:21) [5]

Функция по определению возвращает одно единственное значение.
То, что написано в [0], бред, не зависимо от SQL сервера.


 
sniknik ©   (2007-10-28 02:23) [6]

вот же блин, склероз наверное уже
функция табличного типа тоже может с указанием
SELECT * FROM ::MyFunction
но тебе это не поможет.


 
Delpr ©   (2007-10-28 02:34) [7]

To sniknik, Johnmen:
Хорошо, может я не прав. Только
> Функция возвращает таблицу, состоящую из 2 полей, запись всегда одна.
запись всегда одна, используется одно поле, а возвращается почемуто таблица (на самом рекордсет (т.е. вариант 2 в [1]) )... ресурсов не жалко?

Почему одно поле??? Функция возвращает таблицу из двух полей. Мне надо вернуть 2 значения, поэтому и выбрана таблица на выходе, которую я и читаю! Select используется толко для того, что бы указать поле, которое надо прочитать. Вообще на синтаксис запроса в целом сервер не ругается, ведь при подстановке конечного значения все работает. Мне не понятно, как в моем случае передать параметр!!!
Пример. Есть функция, которая возвращает квадрат и кубическое значение переданного ей параметра. Я, к примеру, хочу узнать квадрат и куб кода клиента. Как это сделать тогда.
Еще раз ребята! Я не настаиваю на правильности моей мысли, просто я пока не вижу в ней бредовости. Если знаете как это сделать, подскажите!


 
Johnmen ©   (2007-10-28 02:50) [8]


> Delpr ©   (28.10.07 02:34) [7]
> Я не настаиваю на правильности моей мысли, просто я пока не вижу в ней бредовости. Если знаете как это сделать, подскажите!

Поясни, в чем мысль.
Что "это" сделать пока не ясно.


 
Delpr ©   (2007-10-28 02:55) [9]

Вернуть два значения из функции, передавая ей параметры!


 
Германн ©   (2007-10-28 02:02) [10]

<offtop>
Чисто для общего развития. А что помимо "хранимых процедур" есть ещё и "хранимые функции"?
</offtop>


 
Delpr ©   (2007-10-28 02:04) [11]

Пользовательские функции... В литературе есть термин хранимые функции


 
sniknik ©   (2007-10-28 02:06) [12]

> Почему одно поле???
потому, что используется одно поле. если не прав покажи пальцем второе в [0].


 
Delpr ©   (2007-10-28 02:10) [13]

Да это просто пример... На самом деле используются два.


 
sniknik ©   (2007-10-28 02:19) [14]

> Да это просто пример... На самом деле используются два.
а.... ну тогда совсем другое дело! не разговариваю с врунами.


 
Delpr ©   (2007-10-28 02:28) [15]

To sniknik:
:-)
Я больше не буду


 
Delpr ©   (2007-10-28 02:30) [16]

Это не обман, просто я сейчас этот запрос тестирую, и пока выбираю только одно поле. В задаче будут выбираться два!


 
sniknik ©   (2007-10-28 02:47) [17]

> :-)
> Я больше не буду
совершенно не смешно. обсуждается именно то, и тот код который приводится. все остальное лажа, ремонт по фотографии. (при подозрении на которую, имхо, надо закрывать ветку и банить автора в назидание)
"упрощения" допустимы только тогда, когда сам автор переписал код, и получил тот же глюк на упрощенном коде, т.е. когда обсуждается именно он.

а то получается
- на сервисе говорите "у меня машина не заводится/не ездит посмотрите что с ней может быть"
- "как же не ездит вы же только что на ней приехали"
- "да не, не эта машина, а та которая у меня в гараже стоит"
- "ну так ее и привозите"
- "да я же говорю она не ездит! вы на этой посмотрите она точно такая же, цвет, колесики такие же круглые... только у этой их четыре а у той два..."

я так думаю там, вам другую машинку вызовут, из кащенко. а здесь почемуто в порядке вещей. а считаете себя программистами... умными людьми...


 
sniknik ©   (2007-10-28 02:47) [18]

Удалено модератором
Примечание: дубль



Страницы: 1 вся ветка

Текущий архив: 2007.11.18;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.026 c
15-1192398060
Help
2007-10-15 01:41
2007.11.18
Матем


15-1191933804
easy
2007-10-09 16:43
2007.11.18
Почившая ветка про PHP DMClient


1-1188215261
leonidus
2007-08-27 15:47
2007.11.18
Как добавить в TRichEdit таблицу


15-1192710762
Сатир
2007-10-18 16:32
2007.11.18
Загрузка модулей, которые содержать компоненты DevExpress


6-1174036472
salexn
2007-03-16 12:14
2007.11.18
TSocketConnection и плохая сетка