|
|
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
Есть такой код внутри процедуры, если временная таблица отсутствует - она создается. На сколько я слышал такие временные таблицы актуальны до перзагрузки сервера ?? На сколько безпроблемна будет работа такой процедуры в будущем ?? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2008, 13:00 |
|
||
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
JenyaD пишет: > Есть такой код внутри процедуры, если временная таблица отсутствует - > она создается. > На сколько я слышал такие временные таблицы актуальны до перзагрузки > сервера ?? Нет. До выхода из процедуры. > На сколько безпроблемна будет работа такой процедуры в будущем ?? > Зависит от процедуры. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2008, 17:00 |
|
||
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
Вся проблема у меня вот в чём : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Процедура считает, что таблица при проверке с помощью "if not exists", существует и при её очистке : delete from tempdb..dov_temp пишет ошибку : tempdb..dov_temp not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output). При этом в tempdb висит временная таблица : guest.dov_temp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2008, 17:20 |
|
||
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
Все таки они похоже после выхода существуют, это созданные с решеткой (#) дропаются автоматически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2008, 17:32 |
|
||
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
MasterZiv JenyaD пишет: > Есть такой код внутри процедуры, если временная таблица отсутствует - > она создается. > На сколько я слышал такие временные таблицы актуальны до перзагрузки > сервера ?? Нет. До выхода из процедуры. > На сколько безпроблемна будет работа такой процедуры в будущем ?? > Зависит от процедуры. http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.2/title.htm There are two kinds of temporary tables: Tables that can be shared among Adaptive Server sessions You create a shareable temporary table by specifying tempdb as part of the table name in the create table statement. For example, the following statement creates a temporary table that can be shared among Adaptive Server sessions: create table tempdb..authors (au_id char(11)) drop table tempdb..authors Adaptive Server does not change the names of temporary tables created this way. The table exists until the current session ends or until its owner drops it using drop table. Tables that are accessible only by the current Adaptive Server session or procedure You create a nonshareable temporary table by specifying a pound sign (#) before the table name in the create table statement. For example: create table #authors (au_id char (11)) The table exists until the current session or procedure ends, or until its owner drops it using drop table. Похоже JenyaD прав! JenyaDПроцедура считает, что таблица при проверке с помощью "if not exists", существует А второе условие(and @firstrun = 1) правильное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2008, 19:05 |
|
||
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
JenyaD пишет: > Все таки они похоже после выхода существуют, это созданные с решеткой > (#) дропаются автоматически. У вас без решётки ? У... как всё запущено-то ... (я что-то просмотрел это). Постоянные таблицы в tempdb (не временные, вы как раз постоянную и создаёте) живут до момента перегрузки сервера. Во время перегрузки сервера tempdb создаётся заново. Как и любая другая БД, tempdb создаётся путём копирования в неё базы данных model. Вывод: вам нужна постоянная таблица в tempdb - создайте её в БД model. Чтобы не перегружать сервер, такую же таблицу создайте и в tempdb. И ваша таблица просто ВСЕГДА БУДЕТ СУЩЕСТВОВАТЬ. Создавать невременные таблицы в процедурах ... ну, как бы это сказать, плохо в общем. Не надо этого. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2008, 19:18 |
|
||
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
JenyaD пишет: > Процедура считает, что таблица при проверке с помощью "if not exists", > существует и при её очистке : delete from tempdb..dov_temp > пишет ошибку : > tempdb..dov_temp not found. Specify owner.objectname or use sp_help to > check whether the object exists (sp_help may produce lots of output). > > При этом в tempdb висит временная таблица : guest.dov_temp Понимаете, не зря люди придумали временные таблицы. Процедуры создаются и выполняются в три этапа. Компилируются, ресолвятся. Оптимизируются. Вы же будете заставлять перересолвить сервер эту вашу таблицу. К тому же, если таблицы нет, процедура, на сколько я помню, просто не создастся. В общем, лучше так не делать. Лучше пользоваться постоянными таблицами в tempdb из model. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2008, 19:21 |
|
||
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
cherrex_DenА второе условие(and @firstrun = 1) правильное? Да вроде, это первый запуск рекурсивной процедуры. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: plaintext MasterZivЛучше пользоваться постоянными таблицами в tempdb из model. Похоже так и нужно будет сделать. Мне нужна временная таблица, которую будет заполнять каждое вложение рекурсивно вызываемой процедуры, а затем эта процедура вернет select из этой временной таблицы. Если я создаю временную таблицу с # то с ней проблемы во вложенных процедурах, так как она видима только в рамках одной процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 12:26 |
|
||
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
MasterZiv Создавать невременные таблицы в процедурах ... ну, как бы это сказать, плохо в общем. Не надо этого. Я это и почувствовал сделав это. Удаляя временную таблицу и запуская процедуру под разными аккаунтами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 12:31 |
|
||
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
JenyaD пишет: > Похоже так и нужно будет сделать. Мне нужна временная таблица, которую > будет заполнять каждое вложение рекурсивно вызываемой процедуры, а затем > эта процедура вернет select из этой временной таблицы. Что ограничение на рекурсию -- 16 вызовов есть помните ? Если я создаю > временную таблицу с # то с ней проблемы во вложенных процедурах, так как > она видима только в рамках одной процедуры. Нет, это не так. Просто "дочернюю" процедуру надо правильно создавать. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 15:53 |
|
||
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
MasterZivЧто ограничение на рекурсию -- 16 вызовов есть помните ? Есть, я тут уже этот вопрос задавал, но это не критически. Конечно можно сделать и в виде цикла, однако я решил попробовать старую добрую рекурсию. MasterZivНет, это не так. Просто "дочернюю" процедуру надо правильно создавать. У меня и главная и дочерняя процедуры в одном лице, только вышеупомянутый параметр позволяет судить о первом запуске. Интересно, что означает правильно ? Да в SQL Anywhere было поудобнее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 16:13 |
|
||
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
Решил пойти по первоначальному пути - создавать временную таблицу с # вне тела процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 17:16 |
|
||
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
Ещё момент, когда я создаю процедуру, а временная таблица не существует ещё. При этом появляется ошибка : #dov_temp not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output). Как, кроме принудительного создания временной таблицы это можно обойти ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 18:28 |
|
||
|
Создание глобальной временной таблицы в процедуре ASE 12/15
|
|||
|---|---|---|---|
|
#18+
JenyaD Как, кроме принудительного создания временной таблицы это можно обойти ?? а как ты считаешь должен поступить сервер при компиляции твоей процы и отсутствии объекта? выхода два : 1) не использовать временную таблицу 2) создавать временные таблицы перед процедурами их использующими ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 23:35 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35648970&tid=2011287]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 358ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...