powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Microsoft задавит Oracle
25 сообщений из 408, страница 4 из 17
Microsoft задавит Oracle
    #34901917
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
tru55 wrote:
> Ну, положим, пакеты в Oracle позволяют не только группировать процедуры
> вместе. Как минимум:
> 1. использование пакетных переменных для передачи значений между
> программными единицами, например, между триггерами и процедурами
Удобно. Но, к сожалению, некоторые т.н. "программисты" этим очень
злоупотребляют :)
С другой стороны - можно ведь и не злоупотреблять, верно?
Удобно, одним словом.

> 2. возможность перегрузки процедур
Сомнительно - зачем нужно? Для геммороя?

> 3. единая грантовка на пакет целиком
У меня таких проблем не возникало - гранты имеют только ~1% от общего
числа процедур. но, в любом случае - возможность есть - пусть будет.

Хотя мне больше всё-таки нужна группировка (ну, и от пакетных переменных
- тоже не отказаолся бы, наверное).


1...

2. Ну почему же? Например, таким способом реализованы стандартные функции, которые могут принимать различные типы аргументов (to_char, nvl и проч.). В противном случае пришлось бы на каждый тип аргумента создавать свою функцию

3. А что, остальные не используются или вызываются из других? В любом случае, удобнее выдать гранты на несколько пакетов, чем на пару сотен процедур
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34901956
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tru55Да что вы говорите?
На этом основан, в частности, стандартный способ избавления от мутации таблицы в триггере.

Простите, но мне не от чего избавляться... У меня ничего не мутирует...

tru55Я уж не говорю об удобстве отключения функционирования части (всего) триггера в зависимости от значения переменной, которое в каждой сессии свое, и проч.

Гм... И потом догадывайся, почему триггер пошел по этой, а не другой ветке, ах да, переменная. И черт его знает, какое значение она имела в момент срабатывания?! Оно, это значение, ведь нигде не сохранилось? Напоминает PCHL из ассемблера.

Если это какого-то аттрибута зависит алгоритм обработки, то это должен быть аттрибут какой-либо сущности, а не переменная, IMHO.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34901969
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tru55 wrote:
> 2. Ну почему же? Например, таким способом реализованы стандартные
> функции, которые могут принимать различные типы аргументов (to_char, nvl
> и проч.). В противном случае пришлось бы на каждый тип аргумента
> создавать свою функцию
э.... а сейчас, простите, не создается?
да, имя - одно и тоже, "тело" - разное.
Плюс - гемор с определением - какой оверлоад применить?
В том же МС СКЛ - cast/convert(to_char/to_date)/isnull(nvl) - принимают
разные типы на вход - хотя ни оверлоадов ни пакетов - нетути :)

> 3. А что, остальные не используются или вызываются из других?
Используются, вызываются... Только гранты им не нужны - нужен грант
только на "корневую" процу - точку входа.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34902004
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА что, остальные не используются или вызываются из других? В любом случае, удобнее выдать гранты на несколько пакетов, чем на пару сотен процедур

А теперь, пожалуйста, сделайте DENY для одной процы из грантованного пакета.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34902439
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin авторА что, остальные не используются или вызываются из других? В любом случае, удобнее выдать гранты на несколько пакетов, чем на пару сотен процедур

А теперь, пожалуйста, сделайте DENY для одной процы из грантованного пакета.

Тема для размышления:
у пакета кроме интерфейса есть еще body

P.S. До завтра
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34902476
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А КОГДА ? КОГДА же наконец это произойдет ?

--

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34902515
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin
Ну, давайте посмотрим... Только в "оригинальную" статью (есть ссылка в приведенной Вами стаье), а не в FAQ по табличным переменным, да еще по 2000 версии.

во первых надо догововорится: вы будете спорить с тем, что временные таблицы вызывают рекомпиляцию на каждый вызов существует рекомендация MS вместо них юзать табличные переменные везде где только можно относится и к mssql2к5 ? или это относилось лишь к версиям до sql2k5 ?

pkarklin
Т.е. Вы считаете, что если Вы по ходу дела (после того, как был создан план выполнения хп) залили во времянку пару-тройку сотен тысяч записей для обработки, то план, составленный на этапе копиляции (когда таблица пуста - читай отсутствует статистика) будет самым верным? IMHO, все с точностью до наоборот!

во вторых думаю вам нужно сначало осознать, что плана выполнения хп просто физически не существует, потому в остальной текст невьехал ...
мое мнение - тысячи рекомпиляций в минуту одних и тех же процедур - немаштабируемо и допускать такое в продакшене не представляется возможным.
в третих список вещей вызывающих рекомпиляцию:
MSDNRecompilations Due to Certain Temporary Table Operations
Use of temporary tables in a stored procedure may cause the stored procedure to be recompiled every time the procedure is executed.

To avoid this, change the stored procedure so that it meets the following requirements:
• All statements that contain the name of a temporary table refer to a temporary table created in the same stored procedure, and not in a calling or called stored procedure, or in a string executed using the EXECUTE statement or sp_executesql stored procedure.
• All statements that contain the name of a temporary table appear syntactically after the temporary table in the stored procedure or trigger.
• There are no DECLARE CURSOR statements whose SELECT statements reference a temporary table.
• All statements that contain the name of any temporary table precede any DROP TABLE statement that references a temporary table.

DROP TABLE statements are not needed for temporary tables created in a stored procedure. The tables are automatically dropped when the procedure has completed.
• No statements creating a temporary table (such as CREATE TABLE or SELECT... INTO) appear in a control-of-flow statement such as IF... ELSE or WHILE.

pkarklin
И что здесь на Ваш взгляд "криминального"? Значения парамтеров положили в табличную переменную. Предположу, что для дальнейшей SET-ориентированной обработки. Если будет приведен полный текст или тынц на оный, можно будет о чем то рассуждать. А так - слив не засчитан.

ну например эта же процедура в Postgres выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE OR REPLACE FUNCTION MarketFeedFrame1 (
                                                IN MaxSize              smallint,
                                                IN price_quote          numeric( 8 , 2 )[],
                                                IN status_submitted     char( 4 ),
                                                IN symbol               char( 15 )[],
                                                IN trade_qty            integer[],
                                                IN type_limit_buy       char( 3 ),
                                                IN type_limit_sell      char( 3 ),
                                                IN type_stop_loss       char( 3 )) RETURNS SETOF record AS $$
DECLARE
полный текст тынца от майкрософт можно взять тут:
http://www.tpc.org/results/FDR/tpce/dell_6850_082407_TPCE_SF.zip

pkarklin
Т.е. вот так вот абстрактно "i/o на tempdb"? В каком контексте? М.б. ВЫ о версионности? Могу Вас разочаровать версионность (успешно используем на OLTP системе) не создает какой-либо заметной нагрузки на tempdb. Почему, наверное стоит прильнуть к первоисточнику, например, Inside Microsoft® SQL Server™ 2005: The Storage Engine By Kalen Delaney Там даже и формула для расчета приведена.

временные таблицы так же хранятся и в темдб, где конкурируют в и/о с сортировками, табличными переменными, версионности и прочими прелестями свалеными майкрософтом в темдб.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34902718
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> во вторых думаю вам нужно сначало осознать, что плана выполнения хп
> просто физически не существует, потому в остальной текст невьехал ...
Угу. Физицски его нет, токмо "виртуально". А текст - надо читать.

> мое мнение - тысячи рекомпиляций в минуту одних и тех же процедур -
> немаштабируемо и допускать такое в продакшене не представляется возможным.
Более того - миллионы рекомпиляций в минуту - это еще хуже.
только мало кто умудряется достичь даже сотен. Если руки - не из...

> в третих список вещей вызывающих рекомпиляцию:
Вкратце: использование временных таблиц - вообще говоря вызывает
рекомпиляцию (не всегда, вроде как).
Вывод: избегайте использования временных таблиц.

Для проформы - можете и на обычных стейтментах использовать, к примеру
keepfixed plan - это чутка расслабляет по поводу изменения статистики.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34902746
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) wrote:
> Тема для размышления:
> у пакета кроме интерфейса есть еще body
насколько я понял, имелась в виду возможность дать разрешение только для
одной процедуры из пакета.
Т.е. - я могу её выполнить, ты - нет.
Хотя оба мы можем выполнить другую процедуру из этого же пакета.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34902912
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexsalog
Покажите как использовать ref_cursor в случае если в клиентской программе "пользователю" предоставлено поле для запроса, который будет тупо запущен на выполнение и от которого клиентская программа ждет набора записей как если бы это было "select * from...". На скуле это делалось:
Код: plaintext
exec SomeSP(parameters,parameters,parameters,);
Покажите правда - мне это очень нужно поработе. Хотя в современных условиях уже есть слава богу pipeline функции. Но, как бы это Вы сделали до 9-ой версии?
Мои предшественники плодили многоэтажные вью.
нихера не понял, parameters это что, входной текст sql statement'a типа 'drop database ...' ? не страшно ? как это связано с многоэтажными вью !? типа такого:

Код: plaintext
1.
2.
3.
4.
5.
6.
   TYPE generic_rc IS REF CURSOR;
   cv generic_rc;
BEGIN
   OPEN cv FOR
      'SELECT '|| column_list ||
        'FROM '|| table_list ||
       'WHERE '|| where_clause ;
http://www.oracle.com/oramag/oracle/01-jan/o11sql.html

2locky

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

lockyВкратце: использование временных таблиц - вообще говоря вызывает
рекомпиляцию (не всегда, вроде как).
Вывод: избегайте использования временных таблиц.
не пойму это сарказм или меня услышали ? :)
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34902952
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> в паре сотен процедур пара десятков запросов в каждой (с временными
> таблицами), которые дергают пара тысяч юзеров ... в чем проблема
> заполучить пару сотен тысяч рекомпиляций ?
угу. добавить еще пару сотен set ansi_nulls on|off...
к каждой третьей дописать with recompile....

"И не такое увидите" (С)


> locky
> Вкратце: использование временных таблиц - вообще говоря вызывает
> рекомпиляцию (не всегда, вроде как).
> Вывод: избегайте использования временных таблиц.
>
> не пойму это сарказм или меня услышали ? :)

не считайте себя "пророком в тёмном отечестве" :)
"Всё уже написано, до нас".
В БОЛ, в МСДН...
там же написано, что не только временные таблицы приводят к
рекомпиляции, но также - изменение статистики (и как с этим бороться),
"выдавливание" планов из кэша (и как с этим бороться)... и прочие "поводы".

Я себе могу достаточно явственно представить систему, в которой и правда
есть "пара сотен процедур", в каждой из которых есть "пара десятков
запросов" с временными таблицами. Более того - примерно такое я видел
(один раз, правда). Да, и тут, скорее всего - будет масса рекомпиляций.
Но это вовсе не означает, что такая практика есть "правильная и
одобряемая". Более того - это немного неправильно (хотя - от случая
зависит) и уж тем более - не совсем одобряемая.
Существуют "секретные техники" по борьбе с рекомпиляциями и/или - по
снижению ущерба от рекомпиляций (все они, кстати, описаны в том же БОЛ).

Я могу себе представить систему на оракле, у которой тоже будет масса
валидаций пакетов - дальше то что? Я ведь не буду по этому поводу тут
кричать, мол "оракл - это жуть! Немасштабировано! Валидации!
Рекомпиляции!" (я уж не говорю о "правильном применении" курсоров и
no_data_found exception).

при "кривых ручках" единтсвенная вещь, которая масштабируется хорошо -
это гемморой.
Банально, но - писать надо ПРАВИЛЬНО, тогда - геммороя будет меньше
(хотя - всё равно - будет).

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34903170
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drevИ до какого процента рынка её раскрутили?:)
Процент существенно больше, чем вам кажется. Просто шума вокруг informix меньше: он просто работает, в том числе и во встраиваемых системах.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34903483
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 All

Приношу свои извинения за долгое молчание. Был занят. Отвечу всем по-порядку, и, может быть тоже не сразу.

Gluk (Kazan)Тема для размышления:
у пакета кроме интерфейса есть еще body

У меня предостаточно более важных тем для размышления. ;) Хотелось бы услышать простой ответ на вопрос: "Можно ли раздавать индивидуальные гранты на отдельные хп в пакете?" - "Да" или "Нет".
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34903560
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!во первых надо догововорится: вы будете спорить с тем, что временные таблицы вызывают рекомпиляцию на каждый вызов существует рекомендация MS вместо них юзать табличные переменные везде где только можно относится и к mssql2к5 ? или это относилось лишь к версиям до sql2k5 ?

Предлагаю договорится о следующем: Если особо не уговаривается, то речь будет вестись о 2005 версии сиквел сервера. Ок?

Спорить с тем, что "временные таблицы вызывают рекомпиляцию на каждый вызов" я безусловно буду, ибо это, мягко говоря, не соответствет действительности. И рекомендации МС как раз таки преследуют цель "корректного" использования временных таблиц, т.е. best practice в разработке кода. Именно "уклонение" от этой практики я имел ввиду под кривизной рук разработчика.


Yo.!во вторых думаю вам нужно сначало осознать, что плана выполнения хп просто физически не существует,

Странно, жопа (сорри за мой французкий) есть, а слова такого нет. ((с) Вовочка)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
--ну люблю я на ней экспериментировать. Так что она у меня и на 2005 поднята.
USE [pubs]
GO
--создадим тестовую хп
CREATE PROC TestProc
AS
CREATE TABLE #authors
	([au_id] varchar( 11 ) NOT NULL,
	[au_lname] [varchar]( 40 ) NOT NULL,
 CONSTRAINT [UPKCL_auidind] PRIMARY KEY CLUSTERED 
(
	[au_id] ASC
))

INSERT #authors SELECT au_id, au_lname FROM dbo.authors

UPDATE
  A
SET
  au_lname = A1.au_lname
FROM
  dbo.authors A
  INNER JOIN #authors A1 ON
  A.au_id = A1.au_id

GO
--почистим кэш
DBCC FREEPROCCACHE 
GO
--выполним
EXEC TestProc
GO
--посмотрим планы
SELECT 
  cacheobjtype,
  objtype,
  objectid, 
  OBJECT_NAME(objectid),
  query_plan 
FROM
  sys.dm_exec_cached_plans
  CROSS APPLY sys.dm_exec_query_plan(plan_handle)
WHERE 
  objtype = 'Proc'
GO
--вау (без колонки query_plan, которая выдает план в виде xml)

Compiled Plan                                      Proc                  1032390747   TestProc

А вот если теперь результат колонки query_plan открыть в отдельном окне SSMS, сохранить его в файл с расширение sqlplan и открыть, опять же в SSMS, то увидим следующее:
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34903584
Чендлер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexsalogМикрософт задавит оракл - 100%, только вопрос времени...
1) потому что во первых вся инфраструктура уже микрософтовская. вся! домен, коммуникейшн сервер. почта...

2) во вторых подход у них более правильный. чтобы администрировать оракл, администратору нужно знать кучу мелких недокументированных нюансов... микрософт в этом смысле - небо и земля

3) если посмотреть, то последняя версия sql-сервера наравне с oracle эксплуатируется на крупных базах . есть сайт со статистикой.

4) а в четвертых - слишком лакомый куок. чтобы такая компания как микрософт не подмяла его под себя... а у них есть все возможности

Конечно, огромный сонм unix систем во всем мире - это сильный аргумент за оракл
но

5) Против unix систем - комплексный подход microsoft и трудности с интеграцией... во вторых никто не будет строить свой бизнес на некомерческом ПО, коим unix является, в третьих microsoft уже выпустила сервер без графической оболочки почти, с улучшенной производительностью...
это один из вариантов установки сервера 2008. Там и многие команды юниксовые работают
Плюс ко всему, есть режим работы в совместимости с unix приложениями... если он будет работать как нужно - unix во многих местах пойдет на йух
1. и чо?
2. хрень
3. эксплатируется, а терь спроси у тех админов каково им
4. у майкрасофта денег не хватет
5. на "некомерческом" ещё как, уже почти выпустила гы гы, это наврно также как и лонгхорн, мы его почти сделали, чучуть осталось. Совместиомсть, да, да майкрософт взял линукс и поменял логотипчик на свой :)
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34903628
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!потому в остальной текст невьехал

Жаль... Я хотел до Вас донести, что оптимальный план для временной таблицы с 5 записями и для 50 000 записей может\будет отличаться хотя бы в плане метода доступа и стратегии объединения.

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

Мое тоже. Но чтобы достичь такого показателя, надо иметь кривизну рук более чем 3ей степени. Впрочем, locky по этому поводу высказался. Мне добавить больше нечего.

Yo.!в третих список вещей вызывающих рекомпиляцию:

Гм... С точностью до наоборот. Это как раз список подходов, которые не приводят к перекомпиляции.

Yo.!ну например эта же процедура в Postgres выглядит так:

И что из этого следует?!

Yo.!полный текст тынца от майкрософт можно взять тут:

Большой тынц. Нужно некоторое время на его "осознание".

Yo.!временные таблицы так же хранятся и в темдб, где конкурируют в и/о с сортировками, табличными переменными, версионности и прочими прелестями свалеными майкрософтом в темдб.

Так можно договорится до обсурда: "Таблицы, индексы и прочее хранится в продакшен бд где все это конкурирует друг с другом". tempdb - это такая же (за некоторым исключением в плане модели восстановления) бд, как и все остальные. И оптимизация работы с ней такая же, как и для всех отсальных бд. Не стоит вешать на tempdb ярлык перегруженной i\o. У Вас есть результаты практичексих тестов? В студию, плиз...
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34903715
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чендлер3. эксплатируется, а терь спроси у тех админов каково им

У Вас есть тексты их отзывов?! Можете сюда выложить?
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34903812
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2pkarklin

то что вы видите это планы sql queries которые встречаются в хп, никакого плана процедурного расширения t-sql и хп. оптимизатору пофигу от куда взялся запрос - из хп, напрямую с клиента или dblink.
по остальному собствено locky уже все что я хотел сказал
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34903875
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!то что вы видите это планы sql queries которые встречаются в хп

Еще бы! А чему там другому быть?

Yo.!никакого плана процедурного расширения t-sql и хп.

Эээ... Плана чего? T-SQL - это и есть процедурное расширение. Масло маслянное, получается. В кеше присутствует скомпилированный план именно хп, как бача, а не как отдельные планы запросов, ее составляющих. При повторном вызове этой хп будет ипользоваться скомпилированный план. Если Вы отдельно отправите три запроса, находящихся внутри хп, то получите три отдельных плана:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
USE [pubs]
GO

DBCC FREEPROCCACHE 
GO

CREATE TABLE #authors
	([au_id] varchar( 11 ) NOT NULL,
	[au_lname] [varchar]( 40 ) NOT NULL,
 CONSTRAINT [UPKCL_auidind] PRIMARY KEY CLUSTERED 
(
	[au_id] ASC
))
GO

INSERT #authors SELECT au_id, au_lname FROM dbo.authors
GO

UPDATE
  A
SET
  au_lname = A1.au_lname
FROM
  dbo.authors A
  INNER JOIN #authors A1 ON
  A.au_id = A1.au_id COLLATE Cyrillic_General_CI_AS
GO

SELECT 
  cacheobjtype,
  objtype,
  objectid, 
  OBJECT_NAME(objectid),
  query_plan 
FROM
  sys.dm_exec_cached_plans
  CROSS APPLY sys.dm_exec_query_plan (plan_handle)
GO

DROP TABLE #authors

Код: plaintext
1.
2.
3.
4.
5.
6.
cacheobjtype                                       objtype              objectid
-------------------------------------------------- -------------------- -----------
Compiled Plan                                      Adhoc                NULL
Compiled Plan                                      Adhoc                NULL
Compiled Plan                                      Adhoc                NULL

(3 row(s) affected)
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34903883
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Yo.!
Для понимания причин перекомпиляции процедур надо понимать исторические предпосылки, которые привели к этому.

Временные таблицы (ВТ) появились очень давно, во вском случае в версии 4 они уже были. Но были ограничения - процедура не видела ВТ, которые создала не она, ВТ(как впочем и все другие объекты) нельзя было создавать в транзакции. В 6-й версии последнее ограничение сняли.
Но всё равно ВТ работали несколько странно - если в процедуре был оператор создания ВТ, то он мог быть для каждой таблицы только один(т.е. нельзя было написать if 2>2 create table #t (i int) else create table #t(i char) ). Этот оператор анализировался и при компиляции процедуры проверялось использование полей ВТ. Т.е. фактически это был не оператор создания, а декларация ВТ.

В 7-й версии(или в 2000?) в процедуре стали видны ВТ, созданные извне. Т.е. при создании процедуры может быть обращение к объектам, которых может еще не быть при компиляции и которые могут постоянно менять структуру. Процедуры, в которых есть такая неопределённость, приходится компилировать непосредственно перед запуском.
В принципе писать такие процедуры считается плохим тоном (хотя бы с точки зрения сопровождения) и используется только когда другие решения еще хуже.

В 2000-м решили что лучше иметь полноценную декларацию ВТ и придумали таблицы-переменные - фактически это те же самые ВТ, которые были в 4-6-й версиях, ну разве что не логируются.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34904035
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperНо были ограничения - процедура не видела ВТ, которые создала не она, ВТ(как впочем и все другие объекты) нельзя было создавать в транзакции. В 6-й версии последнее ограничение сняли.
В 7-й версии(или в 2000?) в процедуре стали видны ВТ, созданные извне.

По моему - вы что-то путаете...
Я, честно сказать, уже сам с трудом помню - что там было в 6.5, но мне кажется - что ВТ, созданные извне там уже были видны.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34904066
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyПо моему - вы что-то путаете...
Я, честно сказать, уже сам с трудом помню - что там было в 6.5, но мне кажется - что ВТ, созданные извне там уже были видны.

Слова SergSuper подтверждаю. На момент выполнения CREATE PROCEDURE в версии 6.5 временная таблица должна была сущестовать в этой сессии.
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34904072
Чендлер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin Чендлер3. эксплатируется, а терь спроси у тех админов каково им

У Вас есть тексты их отзывов?! Можете сюда выложить?
к сажелению нету, просто думаю что обязательно нужно у них спросить про это
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34904143
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin В кеше присутствует скомпилированный план именно хп, как бача, а не как отдельные планы запросов, ее составляющих. При повторном вызове этой хп будет ипользоваться скомпилированный план. Если Вы отдельно отправите три запроса, находящихся внутри хп, то получите три отдельных плана:


а можно тынц куда нибудь на описание ? пока я вижу 3 плана, трех запросов.
а то выходит, что одни и теже запросы пришедшие с клиента и хп будут фигурировать (их планы) в кеше дважды ?


2SergSuper
по ВТ мне все понятно, я пытался показать, что "вкусности оракла" легко и непринужденно временными таблицами обойти не получается ...
...
Рейтинг: 0 / 0
Microsoft задавит Oracle
    #34904332
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
Т.е. - я могу её выполнить, ты - нет.
Хотя оба мы можем выполнить другую процедуру из этого же пакета.


Единицей безопасности является пакет.
Помимо интерфейса он может иметь скрытую реализацию.
Плюс достаточное количество бонусов, чтобы сделать полезность пакетов в Oracle необсуждаемой
В силу архитектурных различий, для MS SQL эти бонусы малоактуальны как таковые (типа всю системы менять надо)
...
Рейтинг: 0 / 0
25 сообщений из 408, страница 4 из 17
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Microsoft задавит Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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