ďťż
 
=?iso-8859-2?Q?=5BMSSQL=5D_procedura_wbudowana_-_problem_z_rekurencj=B1?= ďťż
 
=?iso-8859-2?Q?=5BMSSQL=5D_procedura_wbudowana_-_problem_z_rekurencj=B1?=
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

=?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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • adwokat.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com