Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 5

Помогите пожалста с вызовом хранимой процедуры рекурсивно

23.11.2010, 14:26. Показов 2993. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Таблица имеет структуру
FN_ID_DICT - id
FN_PARENT_ID - id родителя
FD_DATE - дата занесеения записи
FA_SNAME - сокращ. наименование
FA_NAME - полное наименование
FA_OPIS - описание

Процедура

Create PROCEDURE My @DICT_ID int
AS
DECLARE @my_cursor CURSOR
SET @my_cursor = CURSOR global SCROLL FOR
SELECT * FROM Dictionary
WHERE FN_PARENT_ID=@DICT_ID
DECLARE @id int, @p_id int, @I int, @fname varchar(200),
@sname varchar(200), @date_ datetime, @opis varchar(200)
OPEN @my_cursor
SELECT * FROM Dictionary WHERE FN_PARENT_ID=@DICT_ID
ORDER BY FN_PARENT_ID ASC
FETCH NEXT FROM @my_cursor
INTO @id , @p_id, @fname, @sname, @date_, @opis
WHILE @@FETCH_STATUS = 0
BEGIN
if exists(SELECT * FROM Dictionary where FN_PARENT_ID=@id)
EXEC MY @id

FETCH NEXT FROM @my_cursor
INTO @id , @p_id, @fname, @sname, @date_, @opis
END;
CLOSE @my_cursor

======================================== ======
В Делфях в ADODataset запрашиваю exec My 1
Ожидаю что вернёт все выбранные рекурсивно записи, анет тоолько первые вложенные в главный узел
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2010, 14:26
Ответы с готовыми решениями:

проблема с выполнением (вызовом) хранимой процедуры
Есть хранимая процедура, принимающая несколько параметров, и выполняющая INSERT в базу. Нужно вызвать её из скрипта. Пишу так: ...

Создание хранимой процедуры, которая создает хранимые процедуры
Написать хранимую процедуру SQL , которая будет создавать хранимые процедуры(любые) для БД.

Вызов процедуры из хранимой процедуры
подскажите плз. кто сталкивался по теме. необходима так же передача параметров. За ранее всем благодарен

10
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 13
25.11.2010, 13:38
создай временную таблицу или табличную переменную и туда в курсоре делай инсерт, а в конце, после курсора, сделай селект из того, что получится...
0
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 13
25.11.2010, 13:40
извиняюсь не разобрался сначала
0
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 5
25.11.2010, 16:44  [ТС]
А медленно не будет работать ???
0
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 13
25.11.2010, 17:05
Хотелось бы узнать...
Ты хочешь получить что? всех детей указанного родителя?
или я что-то не понимаю
0
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 13
25.11.2010, 17:14
Вообще, мне кажется все вопросы по SQL лучше решать на этом сайте:

http://www.sql.ru/forum/actualthread.aspx?tid=122836&hl=%e4%e5%f 0%e5%e2%ee
0
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 5
25.11.2010, 17:14  [ТС]
Да.... Есть дерево... Мне надо по ID выбрать его и его потомков и отобразить ето в визуальном компоненте (TreeView) Например дерево справочников... Я хочу чтообы появлялась нужная ветвь , т.е. нужный справочник
0
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 13
25.11.2010, 17:16
как раз твой вопрос)
0
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 5
25.11.2010, 17:18  [ТС]
Спасибо тебе посмотрю...
0
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 13
25.11.2010, 17:32
в твоем случае будет выглядеть так :

create procedure my
@ID_DICT int
as
begin

select * into #T from Dictionary where FN_ID_DICT = 1

WHILE @@Rowcount <> 0
BEGIN
insert into #T
SELECT *
FROM Dictionary
where FN_PARENT_ID in (select FN_ID_DICT from #T) and
FN_ID_DICT not in (select FN_ID_DICT from #T)
END

select * from #T order by FN_ID_DICT
drop table #T
end
0
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 5
25.11.2010, 17:45  [ТС]
Огромное тебе спасибо... Я сам ораклист и работа в sql servere меня чуть смутила... там это легко команда connect by prior... А здесь чуть надо подергать... Я теперь буду постоянно обращаться на этот форум нужная вещь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.11.2010, 17:45
Помогаю со студенческими работами здесь

Создание хранимой процедуры
Доброго времени суток, пытаюсь создать хранимую процедуру через запрос вида: CREATE PROCEDURE testBD.dbo.UpdateProc (@OKPO bigint,...

Написание хранимой процедуры
Добрый день !!! Народ помогите написать хранимую процедуру для добавления записей в (detailsview) и автоматический при добавление записи...

Автозапуск хранимой процедуры
Автозапуск хранимой процедуры средствами windows. Нужно раз в месяц выполнять хранимую процедуру. Как это можно автоматизировать на...

Вызов хранимой процедуры
Ка мне можно вызвать хранимую процедуру из SQL скрипта ? SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON GO CREATE VIEW...

Вызов хранимой процедуры
Народ. У меня возникла проблема, может кто порекомендует что-нибудь. Мне надо вызывать одну и туже хранимую процедуру для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru