🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Dziwne zmienne w MS-SQL

#195615
From: Adam
Date: Sat, 16 Jun 2018 18:43
48 lines
2806 bytes
W dniu 2018-06-16 o 20:20, wloochacz pisze:
> W dniu 2018-06-15 o 15:29, Adam pisze:
>> (...)
>> 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ć.

Czy widzisz moją pierwszą odpowiedź dla Kwiatuszka?
Zacytuję fragment:

Otóż, konstruując większe zapytania i korzystając z konstrukcji
SET @SQL = N'
to w edytorze Management Studio wszystko po znaku ['] już nie jest 
kontrolowane względem składni.
Rodzi to możliwość popełnienia błędów choćby literowych, a znaleźć taki 
w większych zapytaniach to problem.

> 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ć ;-)

Jak być może pamiętasz, od czasu do czasu coś tam dorabiam do programów, 
o których kiedyś rozmawialiśmy. Istotnie, czasem brakuje mi wiedzy.
Nie pamiętam teraz konkretnego przykładu, ale w dużych konstrukcjach z 
zagnieżdżonymi selectami i z użyciem LEFT JOIN oraz masą warunków 
zauważyłem, że jeżeli do WHERE ... doda się AND 1=1 (co wydaje się 
bezsensem), to zapytanie wykonuje się szybciej.


-- 
Pozdrawiam.

Adam
Technical Details
Message-ID: <pg3lob$9tf$1$Adam@news.chmurka.net>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.chmurka.net!.POSTED.ent22.internetdsl.tpnet.pl!not-for-mail
References: <pg0f08$vgn$1$Adam@news.chmurka.net> <5b25550e$0$605$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.chmurka.net!.POSTED.ent22.internetdsl.tpnet.pl!not-for-mail
From: Adam <a.g@poczta.onet.pl>
Newsgroups: pl.comp.bazy-danych
Subject: Re: Dziwne zmienne w MS-SQL
Date: Sat, 16 Jun 2018 20:43:24 +0200
Organization: news.chmurka.net
Message-ID: <pg3lob$9tf$1$Adam@news.chmurka.net>
References: <pg0f08$vgn$1$Adam@news.chmurka.net> <5b25550e$0$605$65785112@news.neostrada.pl>
NNTP-Posting-Host: ent22.internetdsl.tpnet.pl
Mime-Version: 1.0
Injection-Date: Sat, 16 Jun 2018 18:43:23 +0000 (UTC)
Injection-Info: news.chmurka.net; posting-account="Adam"; posting-host="ent22.internetdsl.tpnet.pl:83.15.205.22"; logging-data="10159"; mail-complaints-to="abuse-news.(at).chmurka.net"
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0
In-Reply-To: <5b25550e$0$605$65785112@news.neostrada.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit