[ Zdravo_djaci @ 11.11.2007. 09:34 ] @
Pozdrav.
Imam potrebu da kreiram malo komplikovaniji izvestaj.
Za kreiranje ovog izvestaja mi je potrebno da napravim (u uskladistenoj proceduri) temp tabelu u koju cu smestiti rezultate iz dinamickog upita i nakon toga izvrsiti jos neke obrade.

Problem je u tome sto u uskladistenoj proceduri moram da kreiram temp tabelu sa unapred nepoznatim brojem kolona.Broj kolona zavisi od parametara koje prosledjuje klijent.

Pokusao sam da kreiram string sa CREATE TABLE izrazom, ali ne postoji efekat kada se ovakav string izvrsi pomocu :

EXEC(@str)

Da li postoji nacin da se ovako nesto uradi u Transact SQL-u?

Koristim MSSQL2000.
[ Zdravo_djaci @ 11.11.2007. 10:07 ] @
Upravo sam provalio da se na ovaj nacin ne mogu kreirati temp tabele.
Obicne user tabele se mogu kreirati.
[ vujkev @ 12.11.2007. 00:09 ] @
Kako ne može?

Code:

declare @Tmp nvarchar(max)
select @tmp = 'create table ##test (id int identity(1,1) not null, naziv nvarchar(300))'
exec (@tmp)    


samo zavisi za šta ti treba. Ukoliko tabela treba da bude vidljiva samo u okviru procedure onda koristiš jedan znak "#", a ako treba da bude vidljiva dok god je konekcija aktivna onda koristis "##".
[ priki @ 15.11.2007. 07:11 ] @
možeš da kreiraš i promenjivu tipa tabela
recimo

Code:

declare @tbl table
(
sifra int,
naziv nvarchar(50)
)


i dalje je klasine

Code:

insert @tbl (sifra, naziv)
values(...,'...')


ili

Code:

insert @tbl (sifra, naziv)
select sifra, naziv
from tabela


zavisno od situacije
čak štaviše, help kaže:
'Use table variables instead of temporary tables, whenever possible. '
[ Teks @ 18.11.2007. 23:07 ] @
Jel se možemo vratiti na promenljivu od korisnika

Ako promenljiva ima ograničen skup vrednosti
možda bi se mogla kreirati tabela koja bi pokrila
sve kombinacije parametra korisnika
[ priki @ 23.11.2007. 09:16 ] @
broj kolona je verovatno poznat u aplikaciji i toj nekoj promenjivoj

moraš proslediti taj broj kolona upitu u proceduri preko
promenjive varchar ili ceo upit i server ce ti odraditi posao

Code:

  cColumsNames = 'mika, pera, ceca, sveta, 5+6 zbir, null nista, '' prazno'