|
|
|
Вложенная ли процедура?
|
|||
|---|---|---|---|
|
#18+
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 Можно ли во время выполнения процедуры узнать что она вызвана из другой процедуры, а не отдельно? Требуется разный алгоритм действий, когда процедура вызвана из определенной процедуры, и в других случаях. Параметры использовать не хочется, т.к. полбазы и модули переделывать. Просто помогите с конкретным вопросом, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 12:59 |
|
||
|
Вложенная ли процедура?
|
|||
|---|---|---|---|
|
#18+
Ну сходу хочется напомнить, что параметры процедур можно передавать по именам, и параметры могут иметь значения по умолчанию. Т.е. очень легко добавить новый параметр, так, чтобы он не мешал уже существующему приложению работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 13:07 |
|
||
|
Вложенная ли процедура?
|
|||
|---|---|---|---|
|
#18+
@@nestlevel - покажет уровень вложенности SP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 13:09 |
|
||
|
Вложенная ли процедура?
|
|||
|---|---|---|---|
|
#18+
@@nestlevel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 13:09 |
|
||
|
Вложенная ли процедура?
|
|||
|---|---|---|---|
|
#18+
Да, действительно. Но модули переделывать все равно придется. Все-таки, можно ли узнать из какой процедуры вызвана данная процедура? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 13:09 |
|
||
|
Вложенная ли процедура?
|
|||
|---|---|---|---|
|
#18+
Возможно, это вам поможет. 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 13:12 |
|
||
|
Вложенная ли процедура?
|
|||
|---|---|---|---|
|
#18+
К сожалению, уровень вложенности не позволяет определить какой алгоритм использовать, т.к. процедура эта вызывается из разных процедур, а вот при вызове из одной - должна работать по другому. Сделать "null" параметр и задавать его только в этой процедуре... Все равно не очень, т.к. вызывается она через еще одну... вот жеж... :) Как узнать имена процедур верхнего уровня вложенности для определенной процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 13:18 |
|
||
|
Вложенная ли процедура?
|
|||
|---|---|---|---|
|
#18+
UserASE пишет: > Как узнать имена процедур верхнего уровня вложенности для определенной > процедуры? Это уже вряд ли ... вы бы уже давно через параметр сделали ... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 14:10 |
|
||
|
Вложенная ли процедура?
|
|||
|---|---|---|---|
|
#18+
Да уже сделал через параметр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 14:12 |
|
||
|
Вложенная ли процедура?
|
|||
|---|---|---|---|
|
#18+
Ну можно и без параметра.... используя mda таблицы вот такой запрос во вложенной SP, покажет имя SP, которая ее вызвала select object_name(ObjectID,DBID) as object_name from master..monProcessProcedures where SPID= @@spid and ContextID = @@nestlevel -1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 14:16 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=53&tid=2011626]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
198ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 205ms |
| total: | 505ms |

| 0 / 0 |
