Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
ВнизВызов функции из запроса Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.039 c