Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 57 58 59 60 61 [62] 63 64 65 66 .. 106   вперед  Ctrl
 Re: CACHE и MSSQL  [new]
мод
Guest
Зл0й
в Оракле я могу в запросе вызывать мною же написанную функцию которая может лезть в другие таблицы с запросами.

Совершенно верно - и мы плавно переходим к функциональному программированию, подвидом которого является декларативное (sql). Вопрос о соотношении функционального и процедурного программирования уже кажется рассматривали.
4 дек 06, 10:17    [3485532]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
мод
Guest
Павел Воронцов
Ща мы её в момент! (Ух!)

На ANSII SQL ? Ух!
Понятно что оракловый скл постоянно вбирает в себя алгоритмические решения, переводя их в декларации, но вот полноту его еще надо доказать, и пока это не доказано, задачи, не решаемые на скл существуют по определению.
4 дек 06, 10:51    [3485754]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
Валерий Долженко (aka iscrafm)
Guest
ЛП

SELECT TOP 1 ITEMNO,PDATE,OH,GR,TR,SR,SST,LT,LS
FROM MRP01
WHERE ITEMNO>=@ITEMNO AND PDATE>@D
ORDER BY ITEMNO,PDATE
Если я правильно понял Ваш текст, то это и будет та самая "следующая запись".
При желании результат этой выборки запихните в те же самые переменные @ITEMNO, @D и другие, получив изменение текущего состояния и стал бы навигацию. Обошлись, правда, без курсоров, одними запросами.

А следующую :) ЛП, не прикалывайтесь, вопрос серьезный.
4 дек 06, 10:58    [3485822]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
мод
Guest
Просили примерчик:
select ... into .... from t1 where ....
if <условие> then
   select ... into .... from t2 where ....
else
   select ... into .... from t3 where ....
end if;
<условие> ессно м.б. произвольно сложным
4 дек 06, 11:05    [3485869]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
Валерий Долженко (aka iscrafm)
Guest
2 ЛП
---
чтобы перемещаться по списку, нужно сначала поиметь этот список. Чуть ниже пример развертки дерева BOM (многоуровневая спецификация продукции). Здесь не используются курсоры и рекурсивные функции, построение списка для обработки выполняется при помощи цикла и некоторых шаманских действий над структурой хранения.

-- Развертка BOM
set @n = 0
while exists (select itemid from invtrbom where batchid = @BatchId and st = 0  )
begin

-- Потребность в сырье
insert into invtrbom(
id,
batchid,
nodetype,
nodelevel,
itemid,
nqty,
bqty,
parentid,
pqty,
...)
select
newid(),
@BatchId,
m.pt,
@n+1,
m.itemid,
m.qty*p.nqty/m.pqty,
m.bqty*(p.bqty-p.whqty)/m.pqty,
p.itemid,
p.pqty,
...
from invtrbom p
inner join bom m  on p.itemid = m.parentid and (m.pt =3 or m.pt = 8)
....
where p.batchid = @BatchId and p.st = 0

-- Потребность в узлах и полуфабрикатах
insert into invtrbom(
id,
batchid,
nodetype,
nodelevel,
itemid,
nqty,
bqty,
parentid,
pqty,
....
)
select
newid(),
@BatchId,
m.pt,
@n+1,
m.itemid,
round(m.qty*p.nqty/m.pqty,3),
round(m.bqty*(p.bqty-p.whqty)/m.pqty,3),
p.itemid,
p.pqty,
...
from invtrbom p
inner join bom m  on p.itemid = m.parentid and (m.pt =2 or m.pt = 9)
...
where p.batchid = @BatchId and p.st = 0 and ...
 
-- установка статуса для записей обработанного уровня
update invtrbom set st=1 where batchid = @BatchId and nodelevel = @n and st=0

-- переход на следующий уровень
set @n = @n + 1

end -- конец развертки спецификаций
4 дек 06, 12:02    [3486385]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
и чё? что эти простыни доказывают?
4 дек 06, 12:06    [3486424]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
Валерий Долженко (aka iscrafm)
Guest
SergSuper
и чё? что эти простыни доказывают?

эти простыни ничего не доказывают, они показывают то, что
автор
чтобы перемещаться по списку, нужно сначала поиметь этот список.
4 дек 06, 12:12    [3486488]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
Павел Воронцов
Member

Откуда: Новосибирск
Сообщений: 2400
Блог
мод
Просили примерчик:
select ... into .... from t1 where ....
if <условие> then
   select ... into .... from t2 where ....
else
   select ... into .... from t3 where ....
end if;
<условие> ессно м.б. произвольно сложным
Примерчик чего?
select ... into .... 
(select ... from t2 where .... and <условие> = true
union
select ... from t3 where .... and <условие> = false) a
iscrafm
Мне тоже интересно чего доказывают эти простыни.
iscrafm
А следующую :) ЛП, не прикалывайтесь, вопрос серьезный
И следующую так же. Написать Вам портянку или сами попробуете?
4 дек 06, 12:16    [3486533]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32895

Привет, Валерий!
Ты пишешь:

Валерий
ВДa> чтобы перемещаться по списку, нужно сначала поиметь этот список.
это ваше частное решение.
не более того.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3

4 дек 06, 12:16    [3486534]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
Павел Воронцов
Member

Откуда: Новосибирск
Сообщений: 2400
Блог
from забыл.... Ну да люди-то грамотные поди...
4 дек 06, 12:18    [3486549]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
casmith
Member

Откуда:
Сообщений: 84
to iscrafm
Создается впечатление, что любое "курсорное" решение можно привести к виду, когда оно будет решаться исключительно с помошью запросов. Я имею в виду, что для этого, возможно, придется чуть по другому хранить данные (т.е. адаптирровать DDL).
4 дек 06, 12:18    [3486550]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
ЛП
Guest
2 Валерий Долженко (aka iscrafm)
А следующую :) ЛП, не прикалывайтесь, вопрос серьезный.

Я не прикалываюсь, я по-русски написал: "При желании результат этой выборки запихните в те же самые переменные @ITEMNO, @D и другие". Запихнули? Ну тогда "следующую" получите ровно тем же способом.
Надо "много" следующих записей - организуйте цикл подручными средствами. Быть может, что цикл будет и излишним, и задача решится одним или несколькими (быть может весьма сложными) SQL-запросами. Быть может что и нет. Но ведь Вы говорили про задачу, "не решаемую при помощи запросов", а не про задачу, "не решаемую без управляющих конструкций"? Что до циклов (условных операторов, операторов перехода, и т.п.) - про них речь не идет. Без них SQL является алгоритмически неполным, т.е. по определению есть задачи, которые нельзя решить. Но речь, повторюсь, идет не про алгоритмическую полноту отдельно взятого языка, а про "декларативный SQL vs мифическая нафигация".

-------------------------

2 мод
Просили примерчик:
select ... into .... from t1 where ....
if <условие> then
   select ... into .... from t2 where ....
else
   select ... into .... from t3 where ....
end if;
<условие> ессно м.б. произвольно сложным

Простите, это примерчик - чего?

Можно я этот примерчик перепишу вот так:
select ... into .... from t1 where ....
select ... into .... from t2 where .... AND <условие>
select ... into .... from t3 where .... AND NOT <условие>
и еще раз задам вопрос - это примерчик чего?
4 дек 06, 12:22    [3486586]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
ЛП
Guest
2 Валерий Долженко (aka iscrafm)
2 ЛП
---
чтобы перемещаться по списку, нужно сначала поиметь этот список.

А что, я не могу поиметь список?
Окей, давайте озвучим определение списка. Быть может это поможет понять, почему этот список нельзя поиметь в РСУБД. Или почему его поиметь можно.
4 дек 06, 12:24    [3486605]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
мод
Guest
Павел Воронцов

Примерчик чего?
select ... into .... 
(select ... from t2 where .... and <условие> = true
union
select ... from t3 where .... and <условие> = false) a

А кто вам сказал что <условие> м.б. вычислено внутри select ? (нельзя быть таким доверчивым)
(и вообще это не то что нужно)
4 дек 06, 12:24    [3486609]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
casmith
to iscrafm
Создается впечатление, что любое "курсорное" решение можно привести к виду, когда оно будет решаться исключительно с помошью запросов. Я имею в виду, что для этого, возможно, придется чуть по другому хранить данные (т.е. адаптирровать DDL).

нет, предыдущией его пример (по-моему - если я правильно понял что там делается) запросами не решается - во всяком случае нужна именно последовательный расчет по записям в определённом порядке. Во всяком случае для расчета себестоимости так.
4 дек 06, 12:26    [3486624]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
Павел Воронцов
Member

Откуда: Новосибирск
Сообщений: 2400
Блог
мод
Павел Воронцов

Примерчик чего?
select ... into .... 
(select ... from t2 where .... and <условие> = true
union
select ... from t3 where .... and <условие> = false) a

А кто вам сказал что <условие> м.б. вычислено внутри select ? (нельзя быть таким доверчивым)
(и вообще это не то что нужно)
Как это - не вычисляется внутри select?
А что было нужно?
И всё-таки: чего это примерчик?
4 дек 06, 12:29    [3486653]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
Валерий Долженко (aka iscrafm)
Guest
casmith
to iscrafm
Создается впечатление, что любое "курсорное" решение можно привести к виду, когда оно будет решаться исключительно с помошью запросов. Я имею в виду, что для этого, возможно, придется чуть по другому хранить данные (т.е. адаптирровать DDL).

Нужно смотреть на производительность и "читабельность" решения. Насчет любого не знаю, я никогда не ставлю таких целей "сделать все без курсоров". Если по производительности нормально получается, то почему бы и нет.
4 дек 06, 12:32    [3486679]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
мод
Guest
ЛП
Но речь, повторюсь, идет не про алгоритмическую полноту отдельно взятого языка

А мне кажет именно об этом
ЛП

Можно я этот примерчик перепишу вот так:
и еще раз задам вопрос - это примерчик чего?

1. нельзя (см. выше)
2. это пример того что, для решения задачи в общем случае надо написать алгоритм, в котором запросы играют роль процедур( insert update delete) и функций (select). Т. е программа состоит из процедурной части, функциональной и декларативной.
4 дек 06, 12:32    [3486680]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
ЛП
Guest
2 мод
А кто вам сказал что <условие> м.б. вычислено внутри select ? (нельзя быть таким доверчивым)

Хорошо, не м.б. вычислено внутри селекта, зачит м.б. вычислено снаружи
select ... into .... from t1 where ....
declare @condition boolean
set @condition = <условие>
select ... into .... from t2 where .... AND @condition=1 
select ... into .... from t3 where .... AND @condition=0
Легче стало?
Примерчик то - чего?
4 дек 06, 12:35    [3486710]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
Павел Воронцов
Member

Откуда: Новосибирск
Сообщений: 2400
Блог
мод
это пример того что, для решения задачи в общем случае надо написать алгоритм, в котором запросы играют роль процедур( insert update delete) и функций (select). Т. е программа состоит из процедурной части, функциональной и декларативной.
Хорошо, а можно теперь вопрос: А кто здесь с этим спорит, что программа состоит из таких частей и запросы могут играть роль процедур? По именам и со ссылками пожалуйста.
4 дек 06, 12:37    [3486730]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
ЛП
Guest
2 Валерий Долженко (aka iscrafm)
casmith
to iscrafm
Создается впечатление, что любое "курсорное" решение можно привести к виду, когда оно будет решаться исключительно с помошью запросов. Я имею в виду, что для этого, возможно, придется чуть по другому хранить данные (т.е. адаптирровать DDL).

Нужно смотреть на производительность и "читабельность" решения.

Стоп, чуть раньше Вы говорили не про производительность и читабельность, а про принципиальную невозможность решения.

То, что курсорный "синтаксический сахар" может повысить читабельность, и даже может повысить производительность (это еще бабка надвое сказала) - ну да и хек бы с ним.
4 дек 06, 12:38    [3486738]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
Валерий Долженко (aka iscrafm)
Guest
ЛП
Валерий Долженко (aka iscrafm)
Нужно смотреть на производительность и "читабельность" решения.

Стоп, чуть раньше Вы говорили не про производительность и читабельность, а про принципиальную невозможность решения.

Вы "случайно" пропустили одну фразу. Я поправлю с Вашего позволения.
Валерий Долженко (aka iscrafm)
Насчет любого не знаю, я никогда не ставлю таких целей "сделать все без курсоров".
4 дек 06, 12:45    [3486812]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
ЛП
Guest
мод
ЛП
Но речь, повторюсь, идет не про алгоритмическую полноту отдельно взятого языка

А мне кажет именно об этом

А зачем об этом речь идет?
Есть алгоритмически неполные языки. Соответственно есть задачи, которые решаются в алгоритмически полных, но не решаются в алгоритмически неполных.
Есть алгоритмически полные языки. Они равномощны с т.з. решабельных задач, независимо от наличия или отсутствия в них каких-либо курсоров и прочих эпидерсий.
Если разницы между алгоритмически полными языками нет - то о чем нас тут пытаются лечить? Что дескать задачи какие-то нерешабельные есть...
4 дек 06, 12:46    [3486820]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
ЛП
Guest
Валерий Долженко (aka iscrafm)
ЛП
Стоп, чуть раньше Вы говорили не про производительность и читабельность, а про принципиальную невозможность решения.

Вы "случайно" пропустили одну фразу.

Нет, я ничего не пропустил.
Это Ваша фраза:
1. Есть задачи, которые не решаются при помощи запросов

тут
???
4 дек 06, 12:49    [3486845]     Ответить | Цитировать Сообщить модератору
 Re: CACHE и MSSQL  [new]
мод
Guest
Павел Воронцов
А кто здесь с этим спорит, что программа состоит из таких частей и запросы могут играть роль процедур?

Ну, значит консенсунс.
4 дек 06, 13:55    [3487395]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 57 58 59 60 61 [62] 63 64 65 66 .. 106   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить