|
|
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
Например. Пишу процедуру: create procedure GetCount as begin select count(*) as MyTableCount from MyTable end Хочу в другой процедуре получить количество записей из таблицы MyTable путем вызова GetCount и записать это значение в какую нибудь локальную переменную. Как мне это сделать??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 11:31:01 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
можно написать не процедуру, а функцию. А так - используй параметр с OUT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 11:37:36 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
Дело не в этом. Я хотел спросить как мне из процедуры которая возвращет rowset получить значения в локальные переменные. процедура например такая: create procedure MyProc as begin select Field1, Field1, ... FieldN from MyTable end Где N может быть каким угодно - и использование Output параметров не допустимо. ????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 11:45:40 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 11:50:19 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
Без Output параметра!!! Нужно что-то наподобие OpenQuery, только на локальном сервере: sekect * from OPENQUERY(LINKEDSERVER,'exec MyProc') только для локального сервера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 11:57:14 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
используй что-то типа INSERT author_sales EXECUTE get_author_sales (BOL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 12:09:54 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
Insert - замечательно. Только, значение из процедуры мне нужно поместить в локальную переменную. ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 12:53:49 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
а такой вариант не подойдет? Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 13:03:00 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
результат из процедуры заносите в темповую таблицу и дальше с ней работайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 13:14:05 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
Прямо сказать - не очень "изящное" решение :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 14:13:46 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
Все вопросы к Биллу Гейтсу.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 14:16:19 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
Сейчас я создал эту дурацкую таблицу - такой же структуры, что возвращает хранимая процедура попробывал запустить. Ошибка: Server: Msg 8164, Level 16, State 1, Line -1074284091 An INSERT EXEC statement cannot be nested. Вот таблица и скрипт запуска процедуры: create table #BillGatesLazyMan( job_id uniqueidentifier, originating_server varchar(250), name varchar(250), enabled int, description varchar(250), start_step_id int, category varchar(250), owner varchar(250), notify_level_eventlog int, notify_level_email int, notify_level_netsend int, notify_level_page int, notify_email_operator varchar(250), notify_netsend_operator varchar(250), notify_page_operator varchar(250), delete_level int, date_created datetime, date_modified datetime, version_number int, last_run_date int, last_run_time int, last_run_outcome int, next_run_date int, next_run_time int, next_run_schedule_id int, current_execution_status int, current_execution_step varchar(250), current_retry_attempt int, has_step int, has_schedule int, has_target int, type int ) insert #BillGatesLazyMan exec msdb.dbo.sp_help_job @job_name ='Prepare data for Names replication (total)', @job_aspect = job, @execution_status =4 В чем дело? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 14:43:10 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
1. job - это что ? переменная ? 2. процедура может возвращать значения null ? если да, то следует в таблице указать что поля могут принимать значения null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 14:50:22 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
job убрал.... все поля во временной таблице пометил как null выдает тоже самую ошибку.... ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 14:56:04 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
видимо твоя процедура возвращает рекордсет, тогда нельзя пользоваться insert exec ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 14:56:44 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
а текст процедуры можно увидеть ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 15:02:59 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
Процедура это системная - ее описание можно посмотреть в BOL. Вообщем я создал другой топик на этом же форуме: "Как дождаться окончания выполнения job-а" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 15:06:16 |
|
||
|
Получение значений из процедуры
|
|||
|---|---|---|---|
|
#18+
Из этой процедуры нельзя сделать insert exec - в ней уже такая конструкция используется, а вложенный insert exec не допускается. Так что не судьба. Так что придётся разбираться самому в системных таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 15:10:31 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32040277&tid=1821413]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 368ms |

| 0 / 0 |
