Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Вложенная ли процедура? / 10 сообщений из 10, страница 1 из 1
14.04.2008, 12:59
    #35253222
UserASE
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенная ли процедура?
Adaptive Server Enterprise/12.5.2/EBF 11796/P/Compaq Tru64/OSF1 V5.0A/ase1252/1831/64-bit/FBO/Fri Apr 9 10:52:27 2004

Можно ли во время выполнения процедуры узнать что она вызвана из другой процедуры, а не отдельно?

Требуется разный алгоритм действий, когда процедура вызвана из определенной процедуры, и в других случаях.
Параметры использовать не хочется, т.к. полбазы и модули переделывать.
Просто помогите с конкретным вопросом, пожалуйста.
...
Рейтинг: 0 / 0
14.04.2008, 13:07
    #35253252
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенная ли процедура?
Ну сходу хочется напомнить, что параметры процедур можно передавать по именам, и параметры могут иметь значения по умолчанию. Т.е. очень легко добавить новый параметр, так, чтобы он не мешал уже существующему приложению работать.
...
Рейтинг: 0 / 0
14.04.2008, 13:09
    #35253261
moris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенная ли процедура?
@@nestlevel - покажет уровень вложенности SP
...
Рейтинг: 0 / 0
14.04.2008, 13:09
    #35253263
Вложенная ли процедура?
@@nestlevel
...
Рейтинг: 0 / 0
14.04.2008, 13:09
    #35253265
UserASE
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенная ли процедура?
Да, действительно.
Но модули переделывать все равно придется.

Все-таки, можно ли узнать из какой процедуры вызвана данная процедура?
...
Рейтинг: 0 / 0
14.04.2008, 13:12
    #35253282
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенная ли процедура?
Возможно, это вам поможет.
TSQL User's GuideNesting occurs when one stored procedure or trigger calls another. The nesting level is incremented when the called procedure or trigger begins execution and it is decremented when the called procedure or trigger completes execution. Exceeding the maximum of 16 levels of nesting causes the procedure to fail. The current nesting level is stored in the @@nestlevel global variable.
...
Рейтинг: 0 / 0
14.04.2008, 13:18
    #35253314
UserASE
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенная ли процедура?
К сожалению, уровень вложенности не позволяет определить какой алгоритм использовать, т.к. процедура эта вызывается из разных процедур, а вот при вызове из одной - должна работать по другому.
Сделать "null" параметр и задавать его только в этой процедуре...
Все равно не очень, т.к. вызывается она через еще одну...
вот жеж... :)

Как узнать имена процедур верхнего уровня вложенности для определенной процедуры?
...
Рейтинг: 0 / 0
14.04.2008, 14:10
    #35253487
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенная ли процедура?
UserASE пишет:

> Как узнать имена процедур верхнего уровня вложенности для определенной
> процедуры?
Это уже вряд ли ...
вы бы уже давно через параметр сделали ...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.04.2008, 14:12
    #35253493
UserASE
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенная ли процедура?
Да уже сделал через параметр
...
Рейтинг: 0 / 0
14.04.2008, 14:16
    #35253508
moris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенная ли процедура?
Ну можно и без параметра.... используя mda таблицы

вот такой запрос во вложенной SP, покажет имя SP, которая ее вызвала

select object_name(ObjectID,DBID) as object_name from master..monProcessProcedures where SPID= @@spid and ContextID = @@nestlevel -1
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Вложенная ли процедура? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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