🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych
Article #195614

Re: Dziwne zmienne w MS-SQL

#195614
From: wloochacz
Date: Sat, 16 Jun 2018 18:20
48 lines
2756 bytes
W dniu 2018-06-15 o 15:29, Adam pisze:
> Witajcie.
> 
> Dlaczego zmienne w pewnych sytuacjach nie działają jak zmienne?
> 
> Przykład _NIE_ działający:
Ten kod nie jest poprawny dla MSSQL to i nie działa...

> use master
> 
> declare @TaBelKa nvarchar(40)
> set @TaBelKa = 'sys.tables'
> select * from @TaBelKa
> 
> Zmienna niby jest "napompowana" wartością, gdyż select @TaBelKa  zwraca 
> wartość prawidłową.
I tak powinieneś tego używać; select @zmienna, a nie
select * from @zmienna
jeśli to nie jest zmienna tabelaryczna.

> Dlaczego trzeba tworzyć jakieś karkołomne konstrukcje typu:
> 
> use master
> 
> declare @TaBelKa nvarchar(40)
> set @TaBelKa = 'sys.tables'
> DECLARE @SQL NVARCHAR(100)
> SET @SQL = N'SELECT * FROM ' + @TaBelKa
> EXECUTE sp_executesql @SQL
Dlatego, że nazwy tabel i kolumn muszą być statyczne, jeśli zapytanie 
jest statyczne - a jest w tym przypadku.
W przypadku dynamicznych nazw tabel lub kolumn należy przekazać cały SQL 
w sposób dynamiczny i użyć sp_executesql do jego wykonania.

Powiedz lepiej co chcesz zrobić.
Jeśli chcesz wykonać select z tabeli, którą podasz ze zmiennej - to tak, 
właśnie tak to należy zrobić po stronie serwera.

Ale może lepiej ów string do wykonania przygotować w aplikacji?

> Ki diabeł?
> O co chodzi?
Takie zasady.
A dodatkowo doczytaj sobie o zmiennych tabelarycznych i skalarnych.
Co prawda, to nie na temat Twojego pytania, ale... warto wiedzieć ;-)

-- 
wloochacz
Technical Details
Message-ID: <5b25550e$0$605$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!feeds.phibee-telecom.net!border2.nntp.ams1.giganews.com!nntp.giganews.com!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!85.12.16.70.MISMATCH!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <pg0f08$vgn$1$Adam@news.chmurka.net>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!feeds.phibee-telecom.net!border2.nntp.ams1.giganews.com!nntp.giganews.com!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!85.12.16.70.MISMATCH!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: Dziwne zmienne w MS-SQL
Newsgroups: pl.comp.bazy-danych
References: <pg0f08$vgn$1$Adam@news.chmurka.net>
From: wloochacz <wloochacz@no.spam.gmail.com>
Date: Sat, 16 Jun 2018 20:20:59 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0
MIME-Version: 1.0
In-Reply-To: <pg0f08$vgn$1$Adam@news.chmurka.net>
Lines: 48
Message-ID: <5b25550e$0$605$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.23.134.163
X-Trace: 1529173262 unt-rea-b-01.news.neostrada.pl 605 83.23.134.163:53574
X-Complaints-To: abuse@news.neostrada.pl
X-Received-Bytes: 2402
X-Received-Body-CRC: 2818345357
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit