Stránka 1 z 1

SQL - výběr tabulky parametrem  Vyřešeno

Napsal: 23 čer 2009 12:38
od jardal
Dobrý den.
Mám za úkol udělat dotaz do databáze (do skladů). Každý sklad má jinou tabulku a já potřebuji parametrem zadat název tabulky. Mořím se s tím od rána, ale už jsem v koncích. SQL SERVER 2005

Současný stav

Kód: Vybrat vše

INSERT INTO @base
SELECT it.stoItemID,it.itemCode, st.onStock
FROM t2_stoS1Items it INNER JOIN t2_stoS1Items_onStock st ON (it.stoItemID = st.stoItemID )


funguje OK. Jenže já mám víc skladů a potřebuju parametrem vybrat tabulku

takže jsem napsal:

Kód: Vybrat vše

INSERT INTO @base
SELECT it.stoItemID,it.itemCode, st.onStock
FROM "'t2_sto'+rtrim(@sklad)+'Items'" it INNER JOIN "'t2_sto'+rtrim(@sklad)+'Items_onStock'" st ON (it.stoItemID = st.stoItemID )



ve @sklad mám hodnotu S1 (varchar). Pořád to nejde, kde dělám chybu. Poradí někdo? Díky Jarda

Re: SQL - výběr tabulky parametrem

Napsal: 23 čer 2009 13:36
od d1amond
Ahoj,
možné řešení je využít standardní SP z MS SQL:

Kód: Vybrat vše

declare
 @sql nvarchar(4000)
,@sklad nvarchar(10)

select @sklad = 'S1'

select @sql = 'SELECT it.stoItemID,it.itemCode, st.onStock
                    FROM t2_sto' + @sklad + 'Items it
                    INNER JOIN t2_sto' + @sklad + 'Items_onStock st ON (it.stoItemID = st.stoItemID )'

--select @sql as sql

execute sp_executesql @smtm = @sql



select @sql as sql je tam pro kontrolu, jestli se to poskládalo správně.
Jinak v klauzuli FROM můžeš použít ještě funkce nebo proměné typu TABLE. O těch řetězcích bych pochyboval, ale možná to někdo dokáže:).

Re: SQL - výběr tabulky parametrem

Napsal: 25 čer 2009 11:43
od jardal
Děkuju moc, už to funguje.

Díky moc.
Jarda