31.4. SQL ¸í·ÉÀÇ ½ÇÇà

¸ðµç SQL ¸í·ÉÀº, ¸ÅÀÔ SQL ¾îÇø®ÄÉÀ̼dz»¿¡¼­ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ¿¹¸¦ ¸î°³ °¡¸®Åµ´Ï´Ù.

Å×À̺íÀ» ÀÛ¼ºÇÕ´Ï´Ù.

EXEC SQL CREATE TABLE foo (number integer, ascii char(16));
EXEC SQL CREATE UNIQUE INDEX num1 ON foo(number);
EXEC SQL COMMIT;

ÇàÀ» »ðÀÔÇÕ´Ï´Ù.

EXEC SQL INSERT INTO foo (number, ascii) VALUES (9999, 'doodad');
EXEC SQL COMMIT;

ÇàÀ» »èÁ¦ÇÕ´Ï´Ù.

EXEC SQL DELETE FROM foo WHERE number = 9999;
EXEC SQL COMMIT;

´ÜÀÏÇàÀ» ¼±ÅÃÇÕ´Ï´Ù.

EXEC SQL SELECT foo INTO :FooBar FROM table1 WHERE ascii = 'doodad';

Ä¿¼­¸¦ »ç¿ëÇØ ¼±ÅÃÇÕ´Ï´Ù.

EXEC SQL DECLARE foo_bar CURSOR FOR
    SELECT number, ascii FROM foo
    ORDER BY ascii;
EXEC SQL OPEN foo_bar;
EXEC SQL FETCH foo_bar INTO :FooBar, DooDad;
...
EXEC SQL CLOSE foo_bar;
EXEC SQL COMMIT;

°»½ÅÇÕ´Ï´Ù.

EXEC SQL UPDATE foo
    SET ascii = 'foobar'
    WHERE number = 9999;
EXEC SQL COMMIT;

: something ¶ó´Â ÇüÅÂÀÇ Ç¥½Ã´Â È£½ºÆ® º¯¼öÀÔ´Ï´Ù. Áï, CÇÁ·Î±×·¥³»ÀÇ º¯¼ö¸¦ ÂüÁ¶ÇÏ´Â °ÍÀÔ´Ï´Ù. À̰Ϳ¡ ´ëÇØ¼­´Â Section 31.6¿¡¼­ ¼³¸íÇÕ´Ï´Ù.

±âº»°ª ¸ðµå¿¡¼­, ¸í·É¹®Àº EXEC SQL COMMIT°¡ ¹ßÇàµÉ ¶§¿¡¸¸ Ä¿¹ÔµË´Ï´Ù. ¸ÅÀÔ SQL ÀÎÅÍÆäÀ̽º¿¡¼­µµ, (libpqÀÇ Çൿ°ú ºñ½ÁÇÑ) Æ®·£Àè¼ÇÀÇ ÀÚµ¿ Ä¿¹ÔÀ» Áö¿øÇϰí ÀÖ½À´Ï´Ù. ÀÚµ¿ Ä¿¹ÔÀº, ecpg¸í·É(ÀÌÇϸ¦ ÂüÁ¶)ÀÇ -t¸í·É ¶óÀÎ ¿É¼Ç, ȤÀº, EXEC SQL SET AUTOCOMMIT TO ON¹®¿¡ ÀÇÇØ °¡´ÉÇÏ°Ô µË´Ï´Ù. ÀÚµ¿ Ä¿¹Ô ¸ðµå¿¡¼­´Â, Äõ¸®°¡ ¸í½ÃÀûÀÎ Æ®·£Àè¼Ç ºí·ÏÀÇ ³»ºÎ¿¡ ÀÖ´Â °æ¿ì¸¦ Á¦¿ÜÇϰí, ¸ðµç Äõ¸®°¡ ÀÚµ¿ÀûÀ¸·Î Ä¿¹ÔµË´Ï´Ù. ÀÚµ¿ Ä¿¹Ô ¸ðµå´Â, EXEC SQL SET AUTOCOMMIT TO OFF¸¦ »ç¿ëÇØ ¸í½ÃÀûÀ¸·Î ¹«È¿·Î ÇÒ ¼ö ÀÖ½À´Ï´Ù.