Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

dynamiczny SQL vs statyczny

117 views
Skip to first unread message

Martee

unread,
Jan 12, 2008, 7:17:04 AM1/12/08
to
Witam chcialbym sie dowiedziec czy to co pisze mozna nazwac statycznym
SQL-em czy raczej dynamicznym.
Chdozi o to ze pisze aplikacje w C z graficznym interfejsem
uzytkownika i do komunikacji z serwerem MySQL uzywam C API. Wszystkie
zapytania do bazy sa wbudowane w kod aplikacji jako zmienne typu char
ale parametry np do klauzuli WHERE albo konkretne pola w SELECT
doklejane sa do stringa w zaleznosci od tego co wybral uzytkownik za
posrednictwem interfejsu i wtedy w obsludze zdarzenia klikniecia na OK
w oknie zapytanie jest wywolywane na serwerze. Nie uzywam EXECUTE ani
innych komend dynamicznego sql a wszystko zalatwia za mnie C Api
Z gory dziekuje za rozwianie moich watpliwosci

Sławomir Szyszło

unread,
Jan 12, 2008, 7:39:46 AM1/12/08
to
Dnia Sat, 12 Jan 2008 04:17:04 -0800 (PST), Martee <MMK...@gmail.com>
wklepał(-a):

W większości baz dynamiczny SQL to taki:

1)
'select a, b, c
from tabela
where a = '||zmienna_a||' or b>'||zmienna_b

A statyczny:

2)
select a, b, c
from tabela
where a = :p_a or b> :p_b

Potem definiuje się zmienne p_a i p_b oraz podstawia do nich wartości, następnie
wykonuje zapytanie.

W bazach, które potrafią obsługiwać tzw. bind variables parsowanie zapytania w
przypadku 2) wykonywane jest raz, a przy kolejnych wykonaniach (o ile treść
zapytania się nie zmieni) podstawiane są tylko wartości zmiennych.
--
Sławomir Szyszło mailto:slas...@poczta.onet.pl
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?group=pl.comp.bazy-danych

Martee

unread,
Jan 12, 2008, 7:44:06 AM1/12/08
to
On 12 Sty, 13:39, Sławomir Szyszło <slasz...@poczta.onet.pl> wrote:
> Dnia Sat, 12 Jan 2008 04:17:04 -0800 (PST), Martee <MMKo...@gmail.com>
> Sławomir Szyszło mailto:slasz...@poczta.onet.pl

> Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
> FAQ pl.comp.bazy-danychhttp://www.dbf.pl/faq/
> Archiwumhttp://groups.google.com/groups?group=pl.comp.bazy-danych

czyli jest to SQL embeded ?

Martee

unread,
Jan 12, 2008, 7:44:52 AM1/12/08
to
On 12 Sty, 13:39, Sławomir Szyszło <slasz...@poczta.onet.pl> wrote:
> Dnia Sat, 12 Jan 2008 04:17:04 -0800 (PST), Martee <MMKo...@gmail.com>
> Sławomir Szyszło mailto:slasz...@poczta.onet.pl

> Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
> FAQ pl.comp.bazy-danychhttp://www.dbf.pl/faq/
> Archiwumhttp://groups.google.com/groups?group=pl.comp.bazy-danych


czyli jest to SQL typu embeded

Sergiusz Rozanski

unread,
Jan 12, 2008, 11:31:46 AM1/12/08
to
Dnia 12.01.2008 Martee <MMK...@gmail.com> napisał/a:
>> >Z gory dziekuje za rozwianie moich watpliwosci
>>
>> W większości baz dynamiczny SQL to taki:
>>
>> 1)
>> 'select a, b, c
>> from tabela
>> where a = '||zmienna_a||' or b>'||zmienna_b
>>
>> A statyczny:
>>
>> 2)
>> select a, b, c
>> from tabela
>> where a = :p_a or b> :p_b
>>
>> Potem definiuje się zmienne p_a i p_b oraz podstawia do nich wartości, następnie
>> wykonuje zapytanie.

Co to za dynamika? ot zwykłe podstawienie zmiennych, imo dynamiczny to:

"select id,nazwa,"+zmienna+" from tabela where "+zmienna2+" and "+zmienna3+" order by "+po_czym

>> W bazach, które potrafią obsługiwać tzw. bind variables parsowanie zapytania w
>> przypadku 2) wykonywane jest raz, a przy kolejnych wykonaniach (o ile treść
>> zapytania się nie zmieni) podstawiane są tylko wartości zmiennych.

> czyli jest to SQL embeded ?

a embeded sql to się nazywa gdy engine bazy ładuje się w program jako dll czy
lib (np. sqlite), a nie łączy do odrębnego serwera sql.

--
*** rozanski.at.sergiusz.dot.com sq3bkn ***
*** http://www.4x4.kalisz.pl ***
$ You have new spam in /home/serek/maildir/

Sławomir Szyszło

unread,
Jan 12, 2008, 2:02:15 PM1/12/08
to
Dnia 2008-01-12 17:31, Użytkownik Sergiusz Rozanski napisał:

>>> W większości baz dynamiczny SQL to taki:
>>>
>>> 1)
>>> 'select a, b, c
>>> from tabela
>>> where a = '||zmienna_a||' or b>'||zmienna_b
>>>
>>> A statyczny:
>>>
>>> 2)
>>> select a, b, c
>>> from tabela
>>> where a = :p_a or b> :p_b
>>>
>>> Potem definiuje się zmienne p_a i p_b oraz podstawia do nich wartości, następnie
>>> wykonuje zapytanie.
>
> Co to za dynamika? ot zwykłe podstawienie zmiennych, imo dynamiczny to:
>
> "select id,nazwa,"+zmienna+" from tabela where "+zmienna2+" and "+zmienna3+" order by "+po_czym

W dynamicznym można "sklejać" dowolne części zapytania, również klauzulę
select czy nazwy tabel - w moim przykładzie podałem tylko wartości zmiennych.

>
>>> W bazach, które potrafią obsługiwać tzw. bind variables parsowanie zapytania w
>>> przypadku 2) wykonywane jest raz, a przy kolejnych wykonaniach (o ile treść
>>> zapytania się nie zmieni) podstawiane są tylko wartości zmiennych.
>
>> czyli jest to SQL embeded ?
>
> a embeded sql to się nazywa gdy engine bazy ładuje się w program jako dll czy
> lib (np. sqlite), a nie łączy do odrębnego serwera sql.

To nie tak. Opis można znaleźć tu: http://pl.wikipedia.org/wiki/SQL#Formy_SQL-a

--
Sławomir Szyszło mailto:slas...@poczta.onet.pl

Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych

0 new messages