Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1193153479
smartleds
2007-10-23 19:31
2007.11.18
Коллеги , подскажите как у StringGrid сделать заданную ячейку


15-1192360733
Вопрошающий
2007-10-14 15:18
2007.11.18
Что вы знаете об узбекской культуре?


2-1193582414
AlexanderMS
2007-10-28 17:40
2007.11.18
Что это такое - "the instance handle of the application"?


15-1192640155
@!!ex
2007-10-17 20:55
2007.11.18
поворот плоскости перпендикулярно точке.


2-1193385053
Андрей
2007-10-26 11:50
2007.11.18
Положение курсора.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский