powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Наверное, НЕ простой запрос
22 сообщений из 22, страница 1 из 1
Наверное, НЕ простой запрос
    #32069099
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, что я делаю не так???


CREATE FUNCTION active_orders ( @employee int, @from_date datetime, @till_date datetime )
...
CREATE FUNCTION process_order ( @id bigint, @from_date datetime, @till_date datetime )
...

select p. * from active_orders( @employee, @from_date, @till_date ) o,
process_order ( o. [id], @from_date, @till_date ) p
where o. [id] = p. [id]

SQL пишет
Server: Msg 170, Level 15, State 1, Procedure process_active_orders, Line 4
Line 4: Incorrect syntax near '.'.
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069107
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я и ошибаюсь, но не дает он так с функцией:
process_order ( o. [id] ,
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069110
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я и сам подозреваю что не делает, но на что это заменить ( кроме курсоров ) мне пока в голову не пришло - вот и ищу советы
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069137
fima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему с функциями так обращатся нельзя, хотя могу и ошибаться... а как без курсоров... так расскажите, что получить надо?
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069141
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть список "приказов" - active_orders() или таблица orders - дело не меняет
Далее надо создать выборку на основе orders, а формурует ее process_order() - т.е. вызывается для каждой записи в orders и возвращет свою
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069148
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
... dbo.process_order ( o. [id],...
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069149
fima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну может так попробовать. Набор данных на основе orders заносим в таблицу #process_order. Еще один набор в #active_orders, и потом делаем выборку из этих двух таблиц. Работать должно достаточно быстро (по моему даже побыстрее чем с функциями).
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069168
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы логически себе представляете, что вы заставляете делать сервер этим запросом ?

select p. * from active_orders( @employee, @from_date, @till_date ) o,
process_order ( o. [id], @from_date, @till_date ) p
where o. [id] = p. [id]

Вы говорите - хочу связать два набора данных по o. [id] = p. [id] вот только один из наборов будет разный для каждой записи из первого набора. Т.е. хочу связать один набор данных с неизвестным количеством наборов данных.

Думаю, что ваша функция process_order() должна возвращать вообще все данные, для всех id. А уж active_orders() и o. [id] = p. [id] "позаботятся" о фильтрации
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069178
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Glory: Логически понимаю - и уже написал, что бы мне хотелось выполнить таким запросом.

Вот еще оди вариант и тоже не работает:
insert into @processed_orders select [id] from active_orders( @employee, @from_date, @till_date )
update @processed_orders
set
employee = @employee,
from_date = @from_date,
till_date = @till_date
from process_order ( [id], @from_date, @till_date )
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069179
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уже почти согласен на курсор
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069192
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хочу из одной выборки сформировать другую на основании process_order - беру запись - формирую новую - записываю в результирующую выборку, ВСЕ!
КАК ЭТО сделать?
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069221
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваша функция process_order может вернуть на основе двух параметров @from_date datetime и @till_date datetime набор для всех [id] ? Или не может ?
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069223
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Glory: не может! Она возвращает одну запись на основе ОДНОЙ записи в orders
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069227
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO никак. Или написать функцию process_active_orders.
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069229
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ и будет телом для process_active_orders()!
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069231
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я чувствую, что придется использовать курсор ;-)
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069250
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да поставте задачу.... обрисуйте конкретнее...
скрипт таблицы и примерные данные.....
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069256
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Mice:
Вроде задача итак обрисована, дальше некуда
- есть таблица - приказы
- на основании ее строится другая таблица - результат таблицы приказы
- каждая запись в приказах - новая запись в таблице

разве проблема не кристально ясна?
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069270
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И мне не понятно (4 раза всю тему перечитал), да оно и понятно мы из клиники!
Я вот в толк не могу взять, куда тут курсор присобачить!
На мой взгляд, все решается в один селект. Ну, при желании можно в три селекта - но это надо уже стараться :)

id.приказы = id.зиписи по приказам

ЗЫ Join и into
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069277
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НЕЕЕЕЕЕЕЕЕЕААААААААААА:
Вот что было бы с курсором:


DECLARE orders CURSOR FOR
select * from orders where ...

OPEN orders

FETCH orders
INTO @some_data
WHILE @@FETCH_Status = 0
BEGIN

insert into @RET_VAL select * from process_order( @some_data )

END

ПРИ ЭТО @some_data эту не поле, а набор полей!
ВОТ и получили результат - таблицу @RET_VAL
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069281
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2funikovyuri
Давайте лучше откроем новый топик, в котором вы
1. опишите задачу
2. приведете скрипты таблиц
3. приведете примеры исходных данных
4. приведете для этих данных конечный результат
...
Рейтинг: 0 / 0
Наверное, НЕ простой запрос
    #32069415
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А также
o. [id]
должно быть без пробела
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Наверное, НЕ простой запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]