=?iso-8859-2?Q?=5BMSSQL=5D_procedura_wbudowana_-_problem_z_rekurencj=B1?=
pejurek - 17-05-2006 00:40
=?iso-8859-2?Q?=5BMSSQL=5D_procedura_wbudowana_-_problem_z_rekurencj=B1?= Witam Piszę procedurę wbudowaną, która wywołuje sama siebie (rekursja) W związku z tym mam problem: Otóż procedurę wołam rekurencyjnie na otwartym kursorze, w związku z tym są błędy przy próbie jego otworzenia na każdym poziomie rekursji większym od zera. Rozwiązaniem byłoby zapisanie sobie wyników do zmiennych, ale nie wiem, czy w SQL-u są jakieś tablice zmiennych. Oczywiście mogę zrobić tabelę tymczasową, ale wolałbym żeby były to zmienne w pamięci Jak to rozwiązać?
CREATE PROCEDURE Dbo.Procedura @X int AS DECLARE @A int DECLARE Xms_Cursor CURSOR FOR SELECT Id FROM Sms WHERE SrcId = @X OPEN Xms_Cursor FETCH NEXT FROM Xms_Cursor INTO @A WHILE @@FETCH_STATUS = 0 BEGIN EXEC Dbo.Procedura @A FETCH NEXT FROM Xms_Cursor INTO @A END CLOSE Xms_Cursor DEALLOCATE Xms_Cursor
-- pozdrawiam
Grzesiek G. - 17-05-2006 00:40
=?ISO-8859-2?Q?Re=3A_=5BMSSQL=5D_procedura_wbudowana_-_?==?ISO-8859-2?Q?problem_z_rekurencj=B1?=
pejurek napisał(a): > > Witam > Piszę procedurę wbudowaną, która wywołuje sama siebie (rekursja) > W związku z tym mam problem: > Otóż procedurę wołam rekurencyjnie na otwartym kursorze, w związku z tym > są błędy przy próbie jego otworzenia na każdym poziomie rekursji > większym od zera. > Rozwiązaniem byłoby zapisanie sobie wyników do zmiennych, ale nie wiem, > czy w SQL-u są jakieś tablice zmiennych. Oczywiście mogę zrobić tabelę > tymczasową, ale wolałbym żeby były to zmienne w pamięci > Jak to rozwiązać? > > > CREATE PROCEDURE Dbo.Procedura @X int > AS > DECLARE @A int > DECLARE Xms_Cursor CURSOR FOR > SELECT Id FROM Sms WHERE SrcId = @X > OPEN Xms_Cursor > FETCH NEXT FROM Xms_Cursor INTO @A > WHILE @@FETCH_STATUS = 0 > BEGIN > EXEC Dbo.Procedura @A > FETCH NEXT FROM Xms_Cursor INTO @A > END > CLOSE Xms_Cursor > DEALLOCATE Xms_Cursor > > To było coś w stylu DECLARE c LOCAL CURSOR. Generalnie chodzi o kursory lokalne. Pamiętaj tylko o maksymalnej wysokości stosu wywołań dla SQL 2k : 32.
Pozdrawiam
-- Grzegorz Gruza Odpowiadając usuń "spamerom_nie." z adresu!!!
pejurek - 17-05-2006 00:40
=?iso-8859-2?Q?Re:_=5BMSSQL=5D_procedura_wbudowana_-_problem_z_rekurenc?==?iso-8859-2?Q?j=B1?=
Człowiek podpisany jako "pejurek" napisał: > Witam > Piszę procedurę wbudowaną, która wywołuje sama siebie (rekursja) > W związku z tym mam problem: > Otóż procedurę wołam rekurencyjnie na otwartym kursorze, w związku z tym > są błędy przy próbie jego otworzenia na każdym poziomie rekursji > większym od zera.
już znalazłem rozwiązanie, oczywiście pomógł keyword LOCAL:
DECLARE Xms_Cursor CURSOR LOCAL FOR
-- pozdrawiam
Artur Muszynski - 17-05-2006 00:41
=?iso-8859-2?Q?Re:_=5BMSSQL=5D_procedura_wbudowana_-_problem_z_rekurenc?==?iso-8859-2?Q?j=B1?=
"pejurek" <jp@qq.rq> wrote in message news:e4c289$1lf$1@inews.gazeta.pl... > > Witam > Piszę procedurę wbudowaną, która wywołuje sama siebie (rekursja) > W związku z tym mam problem: > Otóż procedurę wołam rekurencyjnie na otwartym kursorze, w związku z tym > są błędy przy próbie jego otworzenia na każdym poziomie rekursji większym > od zera. > Rozwiązaniem byłoby zapisanie sobie wyników do zmiennych, ale nie wiem, > czy w SQL-u są jakieś tablice zmiennych. Oczywiście mogę zrobić tabelę > tymczasową, ale wolałbym żeby były to zmienne w pamięci > Jak to rozwiązać?
Typ TABLE. Kursory są be, rekurencja też, więc jak ci się uda to spróbuj pozybyć się jednego i drugiego.
artur
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
strona plus baza w iso do utf-8
Kodowanie: z iso na utf
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
zanotowane.pldoc.pisz.plpdf.pisz.pladwokat.keep.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|