IBM CICS Åàѵ×ÊÁÏ

EXEC SQL DELETE FROM closeoutsale

WHERE temp_price = :saleprice :saleprice_null; Äã¿ÉÒÔʹÓÃÏÂÃæÓï¾äÀ´Íê³ÉÉÏÊö¹¦ÄÜ£º if (saleprice_null == -1) {

EXEC SQL DELETE FROM closeoutsale WHERE temp_price IS null; } else {

EXEC SQL DELETE FROM closeoutsale WHERE temp_price = :saleprice;

}

ΪÁ˱ãÓÚʶ±ðÖ÷±äÁ¿£¬µ±Ç¶ÈëʽSQLÓï¾äÖгöÏÖÖ÷±äÁ¿Ê±£¬±ØÐëÔÚ±äÁ¿Ãû³ÆÇ°±êÉÏðºÅ£¨£º£©¡£Ã°ºÅµÄ×÷ÓÃÊÇ£¬¸æËßÔ¤±àÒëÆ÷£¬ÕâÊǸöÖ÷±äÁ¿¶ø²»ÊDZíÃû»òÁÐÃû¡£

2 Êý¾ÝµÄ²éѯºÍÐÞ¸Ä

¿ÉÒÔʹÓÃSELECT INTOÓï¾ä²éѯÊý¾Ý£¬²¢½«Êý¾Ý´æ·ÅÔÚÖ÷±äÁ¿ÖС£ÈçÉÏÀýÖеģº

EXEC SQL SELECT au_fname INTO :first_name

from authors where au_lname = :last_name;

ʹÓÃDELETEÓï¾äɾ³ýÊý¾Ý¡£ÆäÓï·¨ÀàËÆÓÚTransact-SQLÖеÄDELETEÓï·¨¡£È磺 EXEC SQL DELETE FROM authors WHERE au_lname = 'White'

ʹÓÃUPDATEÓï¾ä¿ÉÒÔ¸üÐÂÊý¾Ý¡£ÆäÓï·¨¾ÍÊÇTransact-SQLÖеÄUPDATEÓï·¨¡£È磺 ` EXEC SQL UPDATE authors SET au_fname = 'Fred' WHERE au_lname = 'White' ʹÓÃINSERTÓï¾ä¿ÉÒÔ²åÈëÐÂÊý¾Ý¡£ÆäÓï·¨¾ÍÊÇTransact-SQLÖеÄINSERTÓï·¨¡£È磺

EXEC SQL INSERT INTO homesales (seller_name, sale_price) real_estate('Jane Doe', 180000.00); ¶àÐÐÊý¾ÝµÄ²éѯºÍÐÞ¸ÄÇë²Î¼ûÏÂÒ»½Ú¡ª¡ªÓαꡣ

3 ÓαêµÄʹÓÃ

ÓÃǶÈëʽSQLÓï¾ä²éѯÊý¾Ý·Ö³ÉÁ½ÀàÇé¿ö¡£Ò»ÀàÊǵ¥Ðнá¹û£¬Ò»ÀàÊǶàÐнá¹û¡£¶ÔÓÚµ¥Ðнá¹û£¬¿ÉÒÔʹÓÃSELECT INTOÓï¾ä£»¶ÔÓÚ¶àÐнá¹û£¬Äã±ØÐëʹÓÃcursor£¨Óα꣩À´Íê³É¡£Óαê(Cursor)ÊÇÒ»¸öÓëSELECTÓï¾äÏà¹ØÁªµÄ·ûºÅÃû£¬ËüʹÓû§¿ÉÖðÐзÃÎÊÓÉSQL Server·µ»ØµÄ½á¹û¼¯¡£ÏÈÇë¿´ÏÂÃæÕâ¸öÀý×Ó£¬Õâ¸öÀý×ÓµÄ×÷ÓÃÊÇÖðÐдòÓ¡staff±íµÄid¡¢name¡¢dept¡¢ job¡¢years¡¢salaryºÍcommµÄÖµ¡£

EXEC SQL DECLARE C1 CURSOR FOR

SELECT id, name, dept, job, years, salary, comm FROM staff;

EXEC SQL OPEN c1;

while (SQLCODE == 0) {

/* SQLCODE will be zero if data is successfully fetched */

EXEC SQL FETCH c1 INTO :id, :name, :dept, :job, :years, :salary, :comm; if (SQLCODE == 0)

printf(\ id, name, dept, job, years, salary, comm); }

EXEC SQL CLOSE c1;

´ÓÉÏÀý¿´³ö£¬ÄãÊ×ÏÈÓ¦¸Ã¶¨ÒåÓαê½á¹û¼¯£¬¼´¶¨Òå¸ÃÓαêµÄSELECTÓï¾ä·µ»ØµÄÐеļ¯ºÏ¡£È»ºó£¬Ê¹ÓÃFETCHÓï¾äÖðÐд¦Àí¡£

ÖµµÃ×¢ÒâµÄÊÇ£¬Ç¶ÈëSQLÓï¾äÖеÄÓα궨ÒåÑ¡ÏîͬTransact-SQL ÖеÄÓα궨ÒåÑ¡ÏîÓÐЩ²»Í¬¡£±ØÐë×ñѭǶÈëSQLÓï¾äÖеÄÓα궨ÒåÑ¡Ïî¡£ 1£©¡¢ÉùÃ÷Óα꣺

È磺EXEC SQL DECLARE C1 CURSOR FOR

SELECT id, name, dept, job, years, salary, comm FROM staff; 2£©¡¢´ò¿ªÓαê

È磺EXEC SQL OPEN c1;

ÍêÕûÓ﷨Ϊ£ºOPEN ÓαêÃû [USING Ö÷±äÁ¿Ãû | DESCRIPTOR ÃèÊöÃû]¡£¹ØÓÚ¶¯Ì¬OPENÓαêµÄÃèÊö¼ûµÚËĽڡ£ 3£©¡¢È¡Ò»ÐÐÖµ

È磺EXEC SQL FETCH c1 INTO :id, :name, :dept, :job, :years, :salary, :comm; ¹ØÓÚ¶¯Ì¬FETCHÓï¾ä¼ûµÚËĽڡ£ 4£©¡¢¹Ø±ÕÓαê

È磺EXEC SQL CLOSE c1;

¹Ø±ÕÓαêµÄͬʱ£¬»áÊÍ·ÅÓÉÓαêÌí¼ÓµÄËøºÍ·ÅÆúδ´¦ÀíµÄÊý¾Ý¡£ÔڹرÕÓαêǰ£¬¸ÃÓÎ±ê±ØÐëÒѾ­ÉùÃ÷ºÍ´ò¿ª¡£ÁíÍ⣬³ÌÐòÖÕֹʱ£¬ÏµÍ³»á×Ô¶¯¹Ø±ÕËùÓдò¿ªµÄÓαꡣ

Ò²¿ÉÒÔʹÓÃUPDATEÓï¾äºÍDELETEÓï¾äÀ´¸üлòɾ³ýÓÉÓαêÑ¡ÔñµÄµ±Ç°ÐС£Ê¹ÓÃDELETEÓï¾äɾ³ýµ±Ç°ÓαêËùÔÚµÄÐÐÊý¾ÝµÄ¾ßÌåÓï·¨ÈçÏ£º

DELETE [FROM] {table_name | view_name} WHERE CURRENT OF cursor_name ÆäÖУ¬ ? ? ?

table_nameÊDZíÃû£¬¸Ã±í±ØÐëÊÇDECLARE CURSORÖÐSELECTÓï¾äÖÐµÄ±í¡£

view_nameÊÇÊÓͼÃû£¬¸ÃÊÓͼ±ØÐëÊÇDECLARE CURSORÖÐSELECTÓï¾äÖеÄÊÓͼ¡£ cursor_nameÊÇÓαêÃû¡£

Çë¿´ÏÂÃæÕâ¸öÀý×Ó£¬ÖðÐÐÏÔʾfirstnameºÍlastname£¬Ñ¯ÎÊÓû§ÊÇ·ñɾ³ý¸ÃÐÅÏ¢£¬Èç¹û»Ø´ð¡°ÊÇ¡±£¬ÄÇôɾ³ýµ±Ç°ÐеÄÊý¾Ý¡£ EXEC SQL DECLARE c1 CURSOR FOR

SELECT au_fname, au_lname FROM authors FOR BROWSE;

EXEC SQL OPEN c1;

while (SQLCODE == 0)

{

EXEC SQL FETCH c1 INTO :fname, :lname; if (SQLCODE == 0) {

printf(\ printf(\ scanf(\ if (reply == 'y') {

EXEC SQL DELETE FROM authors WHERE CURRENT OF c1; printf(\ } } }

4 SQLCA

DBMSÊÇͨ¹ýSQLCA£¨SQLͨÐÅÇø£©ÏòÓ¦ÓóÌÐò±¨¸æÔËÐдíÎóÐÅÏ¢£¨¼û3.4ÖеÄÀý×Ó£©¡£SQLCAÊÇÒ»¸öº¬ÓдíÎó±äÁ¿ºÍ״ָ̬ʾ·ûµÄÊý¾Ý½á¹¹¡£Í¨¹ý¼ì²éSQLCA£¬Ó¦ÓóÌÐòÄܹ»¼ì²é³öǶÈëʽSQLÓï¾äÊÇ·ñ³É¹¦£¬²¢¸ù¾Ý³É¹¦Óë·ñ¾ö¶¨ÊÇ·ñ¼ÌÐøÍùÏÂÖ´ÐС£Ô¤±àÒëÆ÷×Ô¶¯ÔÚǶÈëSQLÓï¾äÖаüº¬SQLCAÊý¾Ý½á¹¹£¨¼ûµÚ¶þ½ÚµÄÀý×Ódemo.c£©¡£ÔÚ³ÌÐòÖпÉÒÔʹÓÃEXEC SQL INCLUDE SQLCA£¬Ä¿µÄÊǸæËßSQLÔ¤±àÒë³ÌÐòÔڸóÌÐòÖаüº¬Ò»¸öSQLͨÐÅÇø¡£Ò²¿ÉÒÔ²»Ð´£¬ÏµÍ³»á×Ô¶¯¼ÓÉÏSQLCA½á¹¹¡£

1£©¡¢SQLCODE

SQLCA½á¹¹ÖÐ×îÖØÒªµÄ²¿·ÖÊÇSQLCODE±äÁ¿¡£ÔÚÖ´ÐÐÿÌõǶÈëʽSQLÓï¾äʱ£¬DBMSÔÚSQLCAÖÐÉèÖñäÁ¿SQLCODEÖµ£¬ÒÔÖ¸Ã÷Óï¾äµÄÍê³É״̬£º 1¡¢0 ¸ÃÓï¾ä³É¹¦Ö´ÐУ¬ÎÞÈκδíÎó»ò±¨¾¯¡£ 2¡¢<0 ³öÏÖÁËÑÏÖØ´íÎó¡£ 3¡¢>0 ³öÏÖÁ˱¨¾¯ÐÅÏ¢¡£

2£©¡¢SQLSTATE

SQLSTATE±äÁ¿Ò²ÊÇSQLCA½á¹¹ÖеijÉÔ±¡£ËüͬSQLCODEÒ»Ñù£¬¶¼ÊÇ·µ»Ø´íÎóÐÅÏ¢¡£SQLSTATEÊÇÔÚSQLCODEÖ®ºó²úÉúµÄ¡£ÕâÊÇÒòΪ£¬ÔÚÖÆ¶¨SQL2±ê׼֮ǰ£¬¸÷¸öÊý¾Ý¿â³§É̶¼²ÉÓÃSQLCODE±äÁ¿À´±¨¸æÇ¶ÈëʽSQLÓï¾äÖеĴíÎó״̬¡£µ«ÊÇ£¬¸÷¸ö³§ÉÌûÓвÉÓñê×¼µÄ´íÎóÃèÊöÐÅÏ¢ºÍ´íÎóÖµÀ´±¨¸æÏàͬµÄ´íÎó״̬¡£ËùÒÔ£¬±ê×¼»¯×éÖ¯Ôö¼ÓÁËSQLSTATE±äÁ¿£¬¹æ¶¨ÁËͨ¹ýSQLSTATE±äÁ¿±¨¸æ´íÎó״̬ºÍ¸÷¸ö´íÎó´úÂë¡£Òò´Ë£¬Ä¿Ç°Ê¹ÓÃSQLCODEµÄ³ÌÐòÈÔÈ»ÓÐЧ£¬µ«Ò²¿ÉÓñê×¼µÄSQLSTATE´íÎó´úÂë±àдгÌÐò¡£

5 DB2µÄǶÈëSQL³ÌÐò´¦Àí¹ý³Ì

ǶÈëSQL³ÌÐò´¦Àí£¬ÓÉÒ»¸öÔ´³ÌÐò´´½¨ÎªÒ»¸ö¿ÉÖ´ÐÐÎļþµÄ¹ý³Ì¡£ Ê×ÏȶÔÔ´Îļþ×öÔ¤±àÒ루precompiler£©£¬Éú³ÉÁ½¸ö²¿·ÖÎļþ£ºÒ»²¿·ÖÊÇ´¿µÄC³ÌÐòÔ´ÎÄ

¼þ£¬ËüÃÇºÍÆäËûµÄC³ÌÐòÔ´ÎļþÒ»Æð£¬¾­¹ý±àÒëºÍÁ¬½ÓÉú³É¿ÉÖ´ÐеijÌÐò£¨executable program£©£¬¶øÁíÒ»²¿·ÖÊÇbindÎļþ»òpackageÎļþ¡£BindÎļþ¾­¹ýbinder²Ù×÷ÒÔºó£¬Ò²Éú³ÉΪpackageÎļþ¡£Ëùνpackage£¬Êµ¼ÊÉÏÊÇSQLÓï¾äµÄ·ÃÎʼƻ®¡£ËùÒÔ£¬Ô¤±àÒëÆ÷½«Ô´³ÌÐòÖеÄSQLÓï¾äÌá³öÀ´£¬Éú³ÉËûÃǵķÃÎʼƻ®£¬²¢½«·ÃÎʼƻ®´æ·ÅÔÚÊý¾Ý¿â¹ÜÀíÆ÷ÖС£µ±Ö´ÐгÌÐò²¢Óöµ½·ÃÎÊÊý¾Ý¿âµÄÃüÁîʱ£¬Ëü½«µ½Êý¾Ý¿â¹ÜÀíÆ÷ÖÐѰÕÒÊôÓÚËüµÄ·ÃÎʼƻ®£¬È»ºó°´ÕÕ·ÃÎʼƻ®ÖÐËùÉè¼ÆµÄ·½·¨¶ÔÊý¾Ý¿â½øÐзÃÎÊ¡£ µÚÒ»²½¡¢Ô¤±àÒë

Ô´³ÌÐòÉú³ÉÒÔºó£¬ÔÚÔ´³ÌÐòÖÐǶÈëÁËÐí¶àSQLÓï¾ä£¬¶øSQLÓï¾äÊÇËÞÖ÷ÓïÑÔ±àÒëÆ÷Ëù²»ÈÏʶµÄ£¬ËùÒÔÔÚÓÃËÞÖ÷ÓïÑÔ±àÒëÆ÷½øÐбàÒë¡¢Á¬½Ó֮ǰ±ØÐ뽫SQLÓï¾ä·ÖÀë³öÀ´£¬Õâ¾ÍÊÇÔ¤±àÒëËù×öµÄ¹¤×÷¡£DB2ÖÐÔ¤±àÒë²Ù×÷ÊÇͨ¹ýPREPÃüÁîÖ´Ðеģ¬PREPÃüÁîÊ×ÏȽ«Ô´³ÌÐòÖеÄËùÓÐÓйØSQLÓï¾äÈ«²¿×¢ÊÍÆðÀ´£¬¶ÔËü½øÐзÖÎöºÍÓï·¨¼ì²é¡£Èç¹ûÔ´³ÌÐòÖеÄSQLÓï¾äÈ«²¿ÊéдÕýÈ·£¬Ôò½«ÕâЩSQLÓï¾äת»»³ÉCÓïÑÔ¿ÉÒÔʶ±ðµÄһϵÁеÄAPIº¯Êý¡£ÕâЩº¯Êý¿ÉÒÔÔÚº¯ÊýÖ´ÐÐʱ·ÃÎÊÊý¾Ý¿â£¬È»ºó½«Ô´ÎļþÖÐËùÓÐÓÃÓÚÉú³ÉÊý¾Ý¿â¹ÜÀíÆ÷µÄPACKAGEµÄÊý¾ÝÌá³ö×éºÏ³ÉÒ»¸öBINDÎļþ¡£Ò²¿ÉÒÔÖ±½ÓÉú³ÉÒ»¸öPACKAGE£¬µ«ÕâÏ൱ÓÚÔÚÔ¤±àÒëºóÓÖÖ´ÐÐÁËÒ»´ÎBIND²Ù×÷¡£ÔÚÔ¤±àÒëʱ£¬¶ÔÕû¸öÔ´³ÌÐòÎļþÖеÄËùÓбäÁ¿×öͳһ´¦Àí¶ø²»¸ù¾Ý±äÁ¿µÄÉúÃüÆÚÀ´´¦Àí£¬ËùÒÔËÞÖ÷±äÁ¿ÔÚÕû¸ö³ÌÐòÖÐÊÇΨһµÄ¡£ÏÂÃæ½²½âÔ¤±àÒëµÄ²½Ö裺 1£©¡¢Á¬½Óµ½Ò»¸öÊý¾Ý¿â£¬¸Ã²Ù×÷ÊÇΪBIND×ö×¼±¸¡£²Ù×÷ÈçÏ£º db2 connect to cicstest 2£©¡¢Ö´ÐÐÔ¤±àÒëÃüÁ¼ÙÉèÔ´ÎļþΪadhoc.sqc£¬Ôò£º

db2 prep adhoc.sqc bindfile

ÏÂÃæÎÒÃǶÔÔ¤±àÒëµÄ¼¸ÖÖÊä³öÎļþ½øÐÐÌÖÂÛ¡£

Ô¤±àÒëºóÉú³ÉµÄCÓïÑÔÔ´Îļþ£º¸ÃÎļþÖÐÔ­ÓеÄSQLÓï¾ä£¬ÒѾ­È«²¿¼ÓÉÏ×¢ÊͲ¢×ª»»³ÉÁËCÓïÑÔ¿ÉÒÔʶ±ðµÄAPIµ÷Óá£

BINDÎļþ£ºÈç¹ûÔÚÔ¤±àÒëʱʹÓÃBINDFILEÑ¡ÏÔòÉú³ÉBINDÎļþ£¬BINDÎļþµÄºó׺Ϊ.bnd£¬BINDÎļþ¿ÉÒÔÔÚ½«À´Ê¹ÓÃBINDÃüÁîÀ´Éú³ÉPACKAGE¡£

db2 bind adhoc.bnd

Èç¹ûÔÚÔ¤±àÒëʱ£¬Ö»Éú³ÉBINDÎļþ£¬ÄÇô¼´Ê¹ÔÚÔ¤±àÒëʱ£¬²»ÄÜ·ÃÎÊijЩÊý¾Ý¿â¶ÔÏó£¬ÏµÍ³Ò²Ö»ÊDZ¨¾¯£¬¶ø²»»á±¨´í¡£Èç¹ûʹÓÃPACKAGEÑ¡ÏÔòÉú³ÉPACKAGE¡£Èç¹ûÓÐMESSAGEÑ¡ÏÔòÉú³ÉÐÅÏ¢Îļþ£¬Ëü°üº¬ÁËËùÓеķµ»ØÐÅÏ¢£¬È磺¾¯±¨¡¢´íÎóµÈ¡£Ëü±ãÓÚ³ÌÐòÔ±¶ÔÔ´³ÌÐò×ö½øÒ»²½µÄÐ޸ġ£ µÚ¶þ²½¡¢±àÒëºÍÁ¬½Ó

ÔÚÔ¤±àÒëºó£¬³ÌÐòÖÐÖ»ÓÐCÓïÑÔÓï¾ä£¬ËüÃǶ¼¿ÉÒÔΪCÓïÑԵıàÒëÆ÷Ëùʶ±ð¡£ËùÒÔ£¬¿ÉÒÔ°´ÕÕÒ»°ãµÄ·½·¨½øÐбàÒëºÍÁ¬½Ó£¬µ«ÔÚ½«SQLÓï¾äת»»ÒÔºó£¬ÔÚCÓïÑÔ³ÌÐòÖУ¬ÓÖÒýÈëÁËÐí¶àÒ»°ãµÄCÓïÑÔϵͳËùûÓеÄINCLUDEÎļþºÍº¯Êý¿â£¬ÕâЩ¾ùÔÚDB2µÄSDKÖС£ËùÒÔ£¬ÒªÉú³É¿ÉÖ´ÐеijÌÐò£¬¾Í±ØÐë°²×°DB2µÄSDK£¬²¢ÇÒ×öÒÔÏÂÉèÖãº

set INCLUDE=$(DB2PATH)\\include;%include% set LIB=$(DB2PATH)\\lib;%LIB% ÏÂÃæÊDZàÒëºÍÁ¬½Ó£º

cl -o adhoc.exe adhoc.c

Éú³ÉµÄ¿ÉÖ´ÐÐÎļþ±ØÐëÓëÊý¾Ý¿â¹ÜÀíÆ÷ÖеÄPACKAGEÏà½áºÏ£¬²ÅÄÜÖ´ÐС£

BIND

PACKAGEÊÇDB2ΪSQLÓï¾äÖÆ¶¨µÄ·ÃÎʼƻ®¡£Í¨¹ýprecompileÖ®ºó£¬Ô´³ÌÐòÖеÄSQLÓï¾ä²¿·Ö¾Í±»·ÖÀë³öÀ´¡£PACKAGE¾ÍÊǸù¾Ý¾ßÌåµÄSQLÓï¾äºÍÊý¾Ý¿âÖеÄÐÅÏ¢Éú³ÉµÄÕë

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)