Article View: pl.comp.bazy-danych
Article #195614Re: Dziwne zmienne w MS-SQL
From: wloochacz
Date: Sat, 16 Jun 2018 18:20
Date: Sat, 16 Jun 2018 18:20
48 lines
2756 bytes
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-mailReferences:
<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