ďťż
 
Dynamiczna tablica w SQL Server 2000 ďťż
 
Dynamiczna tablica w SQL Server 2000
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

Dynamiczna tablica w SQL Server 2000



Jarek-JT - 17-06-2007 00:15
Dynamiczna tablica w SQL Server 2000
  Hej,

Mam pytanie czy jest mo?liwosc wykorzystania w funkcji w SQL Server 2000
czego? ala tablica dynamiczna (z mo?liwo?ci? dodoawania dowolnej ilo?ci
rekordów, przeszukiwania). Do tej pory w swoim kawa?ku kodu SQLowego
korzysta?em z normalnej tabeli (zaimplementowane jako procedura), jedak
zosta?em zmuszony do przeniesienia procedury do funkcji, a w niej
niestety nie mo?na tworzy?, ani korzysta? z tabel tymczasowych. Ma mo?e
kto? na to jakie? rozwi?zanie?





Krzysztof Raczkowski - 17-06-2007 00:15

  Jarek-JT pisze:
> Hej,
>
> Mam pytanie czy jest mo?liwosc wykorzystania w funkcji w SQL Server 2000
> czego? ala tablica dynamiczna (z mo?liwo?ci? dodoawania dowolnej ilo?ci
> rekordów, przeszukiwania). Do tej pory w swoim kawa?ku kodu SQLowego
> korzysta?em z normalnej tabeli (zaimplementowane jako procedura), jedak
> zosta?em zmuszony do przeniesienia procedury do funkcji, a w niej
> niestety nie mo?na tworzy?, ani korzysta? z tabel tymczasowych. Ma mo?e
> kto? na to jakie? rozwi?zanie?

Z tabel tymczasowych nie .. ale ze zmiennych tablicowych tak

--
Pozdrawiam
K. Raczkowski




Jarek-JT - 17-06-2007 00:15

  Krzysztof Raczkowski napisa?(a):
> Jarek-JT pisze:
>> Hej,
>>
>> Mam pytanie czy jest mo?liwosc wykorzystania w funkcji w SQL Server
>> 2000 czego? ala tablica dynamiczna (z mo?liwo?ci? dodoawania dowolnej
>> ilo?ci rekordów, przeszukiwania). Do tej pory w swoim kawa?ku kodu
>> SQLowego korzysta?em z normalnej tabeli (zaimplementowane jako
>> procedura), jedak zosta?em zmuszony do przeniesienia procedury do
>> funkcji, a w niej niestety nie mo?na tworzy?, ani korzysta? z tabel
>> tymczasowych. Ma mo?e kto? na to jakie? rozwi?zanie?
>
> Z tabel tymczasowych nie .. ale ze zmiennych tablicowych tak
>
> --
> Pozdrawiam
> K. Raczkowski

Ale czy jest mo?liwo?? zadeklarowania dynamicznej zmiennej tablicowej?
Bez podawania jej wielko?ci przy deklaracji i z mo?liwo?ci? dodawania
kolejnych rekordów w trakcie potrzeby?




Marcin A. Guzowski - 17-06-2007 00:16

  Jarek-JT wrote:
> Krzysztof Raczkowski napisa?(a):
>> Jarek-JT pisze:
>>> Hej,
>>>
>>> Mam pytanie czy jest mo?liwosc wykorzystania w funkcji w SQL Server
>>> 2000 czego? ala tablica dynamiczna (z mo?liwo?ci? dodoawania dowolnej
>>> ilo?ci rekordów, przeszukiwania). Do tej pory w swoim kawa?ku kodu
>>> SQLowego korzysta?em z normalnej tabeli (zaimplementowane jako
>>> procedura), jedak zosta?em zmuszony do przeniesienia procedury do
>>> funkcji, a w niej niestety nie mo?na tworzy?, ani korzysta? z tabel
>>> tymczasowych. Ma mo?e kto? na to jakie? rozwi?zanie?
>>
>> Z tabel tymczasowych nie .. ale ze zmiennych tablicowych tak
>>
>> --
>> Pozdrawiam
>> K. Raczkowski
>
> Ale czy jest mo?liwo?? zadeklarowania dynamicznej zmiennej tablicowej?
> Bez podawania jej wielko?ci przy deklaracji i z mo?liwo?ci? dodawania
> kolejnych rekordów w trakcie potrzeby?

Tak. Nazywa si? to zmienna tabelaryczna, a nie tablicowa. Zmienna
tabelaryczna jest w rzeczywisto?ci tabel? tymczasow? w bazie tempdb
zawsze o strukturze sterty (nie mo?na jej indeksowa?). Mo?na z nich
korzysta? w funkcjach.

--
Pozdrawiam,
Marcin Guzowski
http://guzowski.info





Krzysztof Raczkowski - 17-06-2007 00:16

  Marcin A. Guzowski pisze:
> Jarek-JT wrote:
>> Krzysztof Raczkowski napisa?(a):
>>> Jarek-JT pisze:
>>>> Hej,
>>>>
>>>> Mam pytanie czy jest mo?liwosc wykorzystania w funkcji w SQL Server
>>>> 2000 czego? ala tablica dynamiczna (z mo?liwo?ci? dodoawania
>>>> dowolnej ilo?ci rekordów, przeszukiwania). Do tej pory w swoim
>>>> kawa?ku kodu SQLowego korzysta?em z normalnej tabeli
>>>> (zaimplementowane jako procedura), jedak zosta?em zmuszony do
>>>> przeniesienia procedury do funkcji, a w niej niestety nie mo?na
>>>> tworzy?, ani korzysta? z tabel tymczasowych. Ma mo?e kto? na to
>>>> jakie? rozwi?zanie?
>>>
>>> Z tabel tymczasowych nie .. ale ze zmiennych tablicowych tak
>>>
>>> --
>>> Pozdrawiam
>>> K. Raczkowski
>>
>> Ale czy jest mo?liwo?? zadeklarowania dynamicznej zmiennej tablicowej?
>> Bez podawania jej wielko?ci przy deklaracji i z mo?liwo?ci? dodawania
>> kolejnych rekordów w trakcie potrzeby?
>
>
> Tak. Nazywa si? to zmienna tabelaryczna, a nie tablicowa. Zmienna
> tabelaryczna jest w rzeczywisto?ci tabel? tymczasow? w bazie tempdb
> zawsze o strukturze sterty (nie mo?na jej indeksowa?). Mo?na z nich
> korzysta? w funkcjach.
>
>

A mo?esz poda? ?ród?a tych wiadomo?ci? Bo wsz?dzie gdzie ja czyta?em o
zmienny (jak wolisz) tabelarycznych by?o napisane, ?e zmienne te nie
maj? odzwierciedlenia w bazie tempdb, co przyczynia si? np. do zysku na
operacjach I/O na dysku.

?eby nie by? go?os?ownym, przyk?ad:
http://www.sql-server-performance.com/temp_tables.asp

--
Pozdrawiam
K. Raczkowski




Maciej Pilecki - 17-06-2007 00:16

  "Krzysztof Raczkowski" <raczkowk_pulapka@poczta.wp.pl> wrote in message
news:f3cq6c$j2l$1@atlantis.news.tpi.pl...
> Marcin A. Guzowski pisze:
> > Jarek-JT wrote:
> >> Krzysztof Raczkowski napisa?(a):
> >>> Jarek-JT pisze:
> >>>> Hej,
> >>>>
> >>>> Mam pytanie czy jest mo?liwosc wykorzystania w funkcji w SQL Server
> >>>> 2000 czego? ala tablica dynamiczna (z mo?liwo?ci? dodoawania
> >>>> dowolnej ilo?ci rekordów, przeszukiwania). Do tej pory w swoim
> >>>> kawa?ku kodu SQLowego korzysta?em z normalnej tabeli
> >>>> (zaimplementowane jako procedura), jedak zosta?em zmuszony do
> >>>> przeniesienia procedury do funkcji, a w niej niestety nie mo?na
> >>>> tworzy?, ani korzysta? z tabel tymczasowych. Ma mo?e kto? na to
> >>>> jakie? rozwi?zanie?
> >>>
> >>> Z tabel tymczasowych nie .. ale ze zmiennych tablicowych tak
> >>>
> >>> --
> >>> Pozdrawiam
> >>> K. Raczkowski
> >>
> >> Ale czy jest mo?liwo?? zadeklarowania dynamicznej zmiennej tablicowej?
> >> Bez podawania jej wielko?ci przy deklaracji i z mo?liwo?ci? dodawania
> >> kolejnych rekordów w trakcie potrzeby?
> >
> >
> > Tak. Nazywa si? to zmienna tabelaryczna, a nie tablicowa. Zmienna
> > tabelaryczna jest w rzeczywisto?ci tabel? tymczasow? w bazie tempdb
> > zawsze o strukturze sterty (nie mo?na jej indeksowa?). Mo?na z nich
> > korzysta? w funkcjach.
> >
> >
>
> A mo?esz poda? ?ród?a tych wiadomo?ci? Bo wsz?dzie gdzie ja czyta?em o
> zmienny (jak wolisz) tabelarycznych by?o napisane, ?e zmienne te nie
> maj? odzwierciedlenia w bazie tempdb, co przyczynia si? np. do zysku na
> operacjach I/O na dysku.
>
> ?eby nie by? go?os?ownym, przyk?ad:
> http://www.sql-server-performance.com/temp_tables.asp
>

Nikt nikomu nie zabroni wypisywa? bzdur w sieci, a
sql-server-performance.com jest znane z zamieszczania tekstów o w?tpliwej
warto?ci merytorycznej.
Zmienne tabelaryczne maj? sporo ró?nic w stosunku do tabel tymczasowych ale
od lat ju? walcz? z mitem, jakoby istnia?y tylko w pami?ci.
Mitem jest równie?, ?e zawsze s? szybsze/wydajniejsze od tabel tymczasowcyh
(w wielu przypadkach s? du?o wolniejsze, bo nie ma dla nich statystyk i
Query Optymizer wybiera bardzo nieefektywny plan zak?adaj?c, ?e zmienna
trzyma tylko jeden wiersz, podczas gdy w rzeczywisto?ci trzyma np. 100 000).
Na pocz?tek proponuj? ma?y eksperyment my?lowy: co si? stanie je?li do
zmiennej tabelarycznej wstawi? milion rekordów po 2KB w ka?dym, czyli w
sumie ok. 2GB danych, podczas gdy mój serwer ma tylko 1GB pami?ci?
Po wykonaniu tego eksperymentu i samodzielnym wysnuciu wniosków, mo?na
przej?? do dalszej cz??ci edukacji i poczyta? sobie ten artyku?, w
szczególno?ci pytanie czwarte:
http://support.microsoft.com/default.aspx/kb/305977

W tylko jednym si? nie zgodz? z Marcinem, mianowicie zmienna tabelaryczna
nie musi mie? postaci sterty bo mo?na jej za?o?y? PK podczas deklaracji i
wówczas ten PK b?dzie wymuszony unikatowym indeksem klastrowanym, wi?c nie
b?dzie sterty. Mo?na równie? mie? inne indeksy UNIQUE, za?o?one w ten sam
sposób, ale nie da si? explicite za?o?y? indeksu na takiej zmiennej.

Pozdrawiam,
Maciej Pilecki
SQL Server MVP




Marcin A. Guzowski - 17-06-2007 00:16

  Maciej Pilecki wrote:
> W tylko jednym si? nie zgodz? z Marcinem, mianowicie zmienna tabelaryczna
> nie musi mie? postaci sterty bo mo?na jej za?o?y? PK podczas deklaracji i
> wówczas ten PK b?dzie wymuszony unikatowym indeksem klastrowanym, wi?c nie
> b?dzie sterty. Mo?na równie? mie? inne indeksy UNIQUE, za?o?one w ten sam
> sposób, ale nie da si? explicite za?o?y? indeksu na takiej zmiennej.

A rzeczywi?cie, tego pochopnie nie wzi??em pod uwag?.

Co do samej w?tpliwo?ci dotycz?cej istnienia zmiennych tabelarycznych
jako tabel w tempdb - zamiast wierzy? w - jak to Maciek okre?li? -
teksty o w?tpliwej warto?ci merytorycznej, mo?na samemu sprawdzi?
empirycznie, w najbardziej banalny sposób:

USE tempdb
GO
SELECT Count(*) as przed FROM sysobjects
GO
DECLARE @tab TABLE (a int)
SELECT Count(*) as po FROM sysobjects
GO

--
Pozdrawiam,
Marcin Guzowski
http://guzowski.info




Krzysztof Raczkowski - 17-06-2007 00:16

  Maciej Pilecki pisze:
> "Krzysztof Raczkowski" <raczkowk_pulapka@poczta.wp.pl> wrote in message
> news:f3cq6c$j2l$1@atlantis.news.tpi.pl...
>> Marcin A. Guzowski pisze:
>>> Jarek-JT wrote:
>>>> Krzysztof Raczkowski napisa?(a):
>>>>> Jarek-JT pisze:
>>>>>> Hej,
>>>>>>
>>>>>> Mam pytanie czy jest mo?liwosc wykorzystania w funkcji w SQL Server
>>>>>> 2000 czego? ala tablica dynamiczna (z mo?liwo?ci? dodoawania
>>>>>> dowolnej ilo?ci rekordów, przeszukiwania). Do tej pory w swoim
>>>>>> kawa?ku kodu SQLowego korzysta?em z normalnej tabeli
>>>>>> (zaimplementowane jako procedura), jedak zosta?em zmuszony do
>>>>>> przeniesienia procedury do funkcji, a w niej niestety nie mo?na
>>>>>> tworzy?, ani korzysta? z tabel tymczasowych. Ma mo?e kto? na to
>>>>>> jakie? rozwi?zanie?
>>>>> Z tabel tymczasowych nie .. ale ze zmiennych tablicowych tak
>>>>>
>>>>> --
>>>>> Pozdrawiam
>>>>> K. Raczkowski
>>>> Ale czy jest mo?liwo?? zadeklarowania dynamicznej zmiennej tablicowej?
>>>> Bez podawania jej wielko?ci przy deklaracji i z mo?liwo?ci? dodawania
>>>> kolejnych rekordów w trakcie potrzeby?
>>>
>>> Tak. Nazywa si? to zmienna tabelaryczna, a nie tablicowa. Zmienna
>>> tabelaryczna jest w rzeczywisto?ci tabel? tymczasow? w bazie tempdb
>>> zawsze o strukturze sterty (nie mo?na jej indeksowa?). Mo?na z nich
>>> korzysta? w funkcjach.
>>>
>>>
>> A mo?esz poda? ?ród?a tych wiadomo?ci? Bo wsz?dzie gdzie ja czyta?em o
>> zmienny (jak wolisz) tabelarycznych by?o napisane, ?e zmienne te nie
>> maj? odzwierciedlenia w bazie tempdb, co przyczynia si? np. do zysku na
>> operacjach I/O na dysku.
>>
>> ?eby nie by? go?os?ownym, przyk?ad:
>> http://www.sql-server-performance.com/temp_tables.asp
>>
>
> Nikt nikomu nie zabroni wypisywa? bzdur w sieci, a
> sql-server-performance.com jest znane z zamieszczania tekstów o w?tpliwej
> warto?ci merytorycznej.

Ech ... a najlepsze jest to ?e wchodzi si? na t? stron? jednym klikiem z
BOL do??czonego do MSSQL 2005 ...

> Zmienne tabelaryczne maj? sporo ró?nic w stosunku do tabel tymczasowych ale
> od lat ju? walcz? z mitem, jakoby istnia?y tylko w pami?ci.
> Mitem jest równie?, ?e zawsze s? szybsze/wydajniejsze od tabel tymczasowcyh
> (w wielu przypadkach s? du?o wolniejsze, bo nie ma dla nich statystyk i
> Query Optymizer wybiera bardzo nieefektywny plan zak?adaj?c, ?e zmienna
> trzyma tylko jeden wiersz, podczas gdy w rzeczywisto?ci trzyma np. 100 000).
> Na pocz?tek proponuj? ma?y eksperyment my?lowy: co si? stanie je?li do
> zmiennej tabelarycznej wstawi? milion rekordów po 2KB w ka?dym, czyli w
> sumie ok. 2GB danych, podczas gdy mój serwer ma tylko 1GB pami?ci?

Nigdy nie zak?ada?em upychania tam (@) du?ej ilo?ci rekordów :) - to
jest (by?o oczywiste)

> Po wykonaniu tego eksperymentu i samodzielnym wysnuciu wniosków, mo?na
> przej?? do dalszej cz??ci edukacji i poczyta? sobie ten artyku?, w
> szczególno?ci pytanie czwarte:
> http://support.microsoft.com/default.aspx/kb/305977
>
> W tylko jednym si? nie zgodz? z Marcinem, mianowicie zmienna tabelaryczna
> nie musi mie? postaci sterty bo mo?na jej za?o?y? PK podczas deklaracji i
> wówczas ten PK b?dzie wymuszony unikatowym indeksem klastrowanym, wi?c nie
> b?dzie sterty. Mo?na równie? mie? inne indeksy UNIQUE, za?o?one w ten sam
> sposób, ale nie da si? explicite za?o?y? indeksu na takiej zmiennej.
>

Ten artyku? te? jest ciekawy ...
http://www.microsoft.com/technet/pro...ithtempdb.mspx

Dzi?kuj? za sprostowania :)

--
Pozdrawiam
K. Raczkowski




Jarek-JT - 17-06-2007 00:17

  > DECLARE @tab TABLE (a int)

Dziala tak jak chcialem - nawet w funkcjach. Dziekuje bardzo :)
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= =?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?= Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= =?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?= [Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?= [newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?= [oracle] - Oracle SQL Developer - co to jest SID?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • autwywalczyl.opx.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