%BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ 6TFS T (VJEF BOE 3FGFSFODF 3FMFBTF "QSJM
¦ %BUB%JSFDU 5FDIOPMPHJFT $PSQ "MM SJHIUT SFTFSWFE 1SJOUFE JO UIF 6 4 " %BUB%JSFDU %BUB%JSFDU $POOFDU %BUB%JSFDU $POOFDU BOE 4FRVF-JOL BSF SFHJTUFSFE USBEFNBSLT PG %BUB%JSFDU 5FDIOPMPHJFT $PSQ JO UIF 6OJUFE 4UBUFT BOE PUIFS DPVOUSJFT BOE %BUB%JSFDU 4QZ %BUB%JSFDU 5FTU %BUB%JSFDU 92VFSZ BOE 4VQQPSU-JOL BSF USBEFNBSLT PG %BUB%JSFDU 5FDIOPMPHJFT $PSQ JO UIF 6OJUFE 4UBUFT BOE PUIFS DPVOUSJFT +BWB BOE BMM +BWB CBTFE USBEFNBSLT BOE MPHPT BSF USBEFNBSLT PS SFHJTUFSFE USBEFNBSLT PG 4VO .
5BCMF PG $POUFOUT -JTU PG 5BCMFT 1SFGBDF 6TJOH UIJT #PPL $POWFOUJPOT 6TFE JO UIJT #PPL "CPVU UIF 1SPEVDU %PDVNFOUBUJPO 2VJDL 4UBSU $POOFDU
5BCMF PG $POUFOUT " # $ % & 0%#$ $POGPSNBODF -FWFM /VNCFS PG $POOFDUJPOT BOE 4UBUFNFOUT 4VQQPSUFE 0%#$ "1* BOE 4DBMBS 'VODUJPOT "1* 'VODUJPOT 4DBMBS 'VODUJPOT -PDLJOH BOE *TPMBUJPO -FWFMT
BCMF PG $POUFOUT ' ( 7BMVFT GPS *"/""QQ$PEF1BHF $POOFDUJPO 4USJOH "UUSJCVUF 5IF 6/*9 -JOVY &OWJSPONFOUT &OWJSPONFOU 7BSJBCMFT 5IF JWUFTUMJC EEUFTUMJC 5PPM %BUB 4PVSDF $POGJHVSBUJPO EFNPPECD
5BCMF PG $POUFOUT %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ 6TFS T (VJEF BOE 3FGFSFODF
-JTU PG 5BCMFT 5BCMF /4, 42- .9 8JSF 1SPUPDPM $POOFDUJPO 4USJOH "UUSJCVUFT 5BCMF /4, 42- .
-JTU PG 5BCMFT %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ 6TFS T (VJEF BOE 3FGFSFODF
1SFGBDF 5IJT CPPL JT ZPVS VTFS T HVJEF BOE SFGFSFODF UP UIF %BUB%JSFDU 0%#$ ESJWFST %BUB%JSFDU $POOFDU GPS 0%#$ BOE 0%#$ GSPN %BUB%JSFDU 5FDIOPMPHJFTª $POOFDU 4FSJFT GPS %BUB%JSFDU $POOFDU GPS 5IJT QSPEVDU JODMVEFT EBUBCBTF ESJWFST UIBU BSF DPNQMJBOU XJUI UIF 0QFO %BUBCBTF $POOFDUJWJUZ 0%#$ TQFDJGJDBUJPO 6TJOH UIJT #PPL 5IF DPOUFOU PG UIJT CPPL JT CBTFE PO UIF BTTVNQUJPO UIBU ZPV BSF GBNJMJBS XJUI ZPVS PQFSBUJOH TZTUFN BOE JUT DPNNBOET *U DPOUBJOT UIF GPMMPXJOH DIBQUFST O
1SFGBDF 5IJT CPPL BMTP JODMVEFT TFWFSBM BQQFOEJYFT UIBU QSPWJEF JOGPSNBUJPO PO UFDIOJDBM UPQJDT O "QQFOEJY " i0%#$ "1* BOE 4DBMBS 'VODUJPOTw PO QBHF MJTUT UIF TVQQPSUFE 0%#$ "1* GVODUJPOT "OZ FYDFQUJPOT BSF MJTUFE JO UIF ESJWFS DIBQUFS VOEFS UIF TFDUJPO 0%#$ $POGPSNBODF -FWFM 5IJT BQQFOEJY BMTP MJTUT UIF 0%#$ TDBMBS GVODUJPOT O "QQFOEJY # i-PDLJOH BOE *TPMBUJPO -FWFMTw PO QBHF QSPWJEFT B HFOFSBM EJTDVTTJPO PG JTPMBUJPO MFWFMT BOE MPDLJOH O "QQFOEJY % i6TJOH *OEFYFTw PO QBHF
$POWFOUJPOT 6TFE JO UIJT #PPL *G ZPV BSF XSJUJOH QSPHSBNT UP BDDFTT 0%#$ ESJWFST ZPV OFFE UP PCUBJO B DPQZ PG UIF 0%#$ 1SPHSBNNFS T 3FGFSFODF GPS UIF .JDSPTPGU 0QFO %BUBCBTF $POOFDUJWJUZ 4PGUXBSF %FWFMPQNFOU ,JU BWBJMBCMF GSPN .
1SFGBDF $POWFOUJPO &YQMBOBUJPO monospace *OEJDBUFT TZOUBY FYBNQMFT WBMVFT UIBU ZPV TQFDJGZ PS SFTVMUT UIBU ZPV SFDFJWF monospaced italics GPSXBSE TMBTI *OEJDBUFT OBNFT UIBU BSF QMBDFIPMEFST GPS WBMVFT UIBU filename ZPV TQFDJGZ 'PS FYBNQMF 4FQBSBUFT NFOVT BOE UIFJS BTTPDJBUFE DPNNBOET 'PS FYBNQMF 4FMFDU 'JMF $PQZ NFBOT UIBU ZPV TIPVME TFMFDU $PQZ GSPN UIF 'JMF NFOV 5IF TMBTI BMTP TFQBSBUFT EJSFDUPSZ MFWFMT XIFO TQFDJGZJOH MPDBUJPOT VOEFS 6/*9 WFSUJDBM SVMF ] CSBDLFUT < > *O
2VJDL 4UBSU $POOFDU 5IJT DIBQUFS QSPWJEFT CBTJD JOGPSNBUJPO GPS DPOGJHVSJOH BOE UFTU DPOOFDUJOH XJUI ZPVS %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ ESJWFST JNNFEJBUFMZ BGUFS JOTUBMMBUJPO 5P UBLF GVMM BEWBOUBHF PG UIF GFBUVSFT PG UIF ESJWFST XF SFDPNNFOE UIBU ZPV SFBE $IBQUFS i6TJOH 5IF 1SPEVDUw BOE UIF /4, 42- .
$IBQUFS 2VJDL 4UBSU $POOFDU &OWJSPONFOU 4FUVQ $IFDL ZPVS QFSNJTTJPOT :PV TIPVME MPH JO BT B VTFS XJUI GVMM S X Y QFSNJTTJPOT SFDVSTJWFMZ PO UIF FOUJSF QSPEVDU JOTUBMMBUJPO EJSFDUPSZ %FUFSNJOF XIJDI TIFMM ZPV BSF SVOOJOH CZ FYFDVUJOH UIF FOW DPNNBOE 3VO UIF %BUB%JSFDU 5FDIOPMPHJFT TFUVQ TDSJQU UP TFU WBSJBCMFT 5XP TDSJQUT PECD TI BOE PECD DTI BSF JOTUBMMFE JO UIF JOTUBMMBUJPO EJSFDUPSZ 'PS ,PSO #PSOF BOE FRVJWBMFOU TIFMMT FYFDVUF PECD TI 'PS B $ TIFMM FYFDVUF PECD DTI
$POGJHVSJOH BOE $POOFDUJOH PO 6/*9 BOE -JOVY XIFSF driver_shared_object_name JT UIF OBNF PG UIF TQFDJGJD ESJWFS GJMF 'PS FYBNQMF UIF /4, 42- .
$IBQUFS 2VJDL 4UBSU $POOFDU 5FTUJOH UIF $POOFDUJPO 5IF QSPEVDU JOTUBMMBUJPO JODMVEFT BO 0%#$ BQQMJDBUJPO DBMMFE FYBNQMF UIBU DBO CF VTFE UP DPOOFDU UP B EBUB TPVSDF BOE FYFDVUF 42- 5IF BQQMJDBUJPO JT MPDBUFE JO UIF JOTUBMMBUJPO@EJSFDUPSZ FYBNQMF EJSFDUPSZ 5P SVO UIF QSPHSBN BGUFS TFUUJOH VQ B EBUB TPVSDF JO UIF PECD JOJ example BOE GPMMPX UIF QSPNQUT UP FOUFS ZPVS EBUB TPVSDF SQL> QSPNQU BQQFBST BOE ZPV DBO UZQF JO 42- TUBUFNFOUT TVDI BT SELECT * FROM table *G FYBNQMF JT VOBCMF UP DPOO
6TJOH 5IF 1SPEVDU 5IJT DIBQUFS DPOUBJOT UIF GPMMPXJOH TFDUJPOT O O O O O w8IBU *T 0%#$ w w&OWJSPONFOU 4QFDJGJD *OGPSNBUJPOw w#JOEJOH 1BSBNFUFS .BSLFSTw w7FSTJPO 4USJOH *OGPSNBUJPOw w3FUSJFWJOH %BUB 5ZQF *OGPSNBUJPOw 8IBU *T 0%#$ 5IF 0QFO %BUBCBTF $POOFDUJWJUZ 0%#$ JOUFSGBDF CZ .JDSPTPGU BMMPXT BQQMJDBUJPOT UP BDDFTT EBUB JO EBUBCBTF NBOBHFNFOU TZTUFNT %#.
$IBQUFS 6TJOH 5IF 1SPEVDU O " TUBOEBSE XBZ UP DPOOFDU BOE MPHPO UP B %#.
&OWJSPONFOU 4QFDJGJD *OGPSNBUJPO 5IF GPMMPXJOH GJHVSF TIPXT UIF SFMBUJPOTIJQ BNPOH UIF GPVS DPNQPOFOUT Application ODBC Interface Driver Manager Driver Driver Data Source Data Source Driver Data Source 8IZ %P "QQMJDBUJPO %FWFMPQFST /FFE 0%#$ 6TJOH 0%#$ BO BQQMJDBUJPO EFWFMPQFS DBO EFWFMPQ DPNQJMF BOE TIJQ BO BQQMJDBUJPO XJUIPVU UBSHFUJOH B TQFDJGJD %#.
$IBQUFS 6TJOH 5IF 1SPEVDU 'PS 6/*9 BOE -JOVY 6TFST 5IF GPMMPXJOH BSF SFRVJSFNFOUT GPS 6/*9 BOE -JOVY PQFSBUJOH 0%#$ ESJWFST BSF CJU ESJWFST BOE UIF %BUB%JSFDU $POOFDU GPS 0%#$ ESJWFST BSF CJU ESJWFST TZTUFNT 5IF %BUB%JSFDU $POOFDU GPS #JU %SJWFST O *G ZPVS BQQMJDBUJPO XBT CVJMU XJUI CJU TZTUFN MJCSBSJFT ZPV NVTU VTF B CJU ESJWFS 5IF EBUBCBTF ZPV BSF DPOOFDUJOH UP DBO CF FJUIFS CJU PS CJU FOBCMFE "*9 O 1PXFS 1$ O "*9 BOE PQFSBUJOH TZTUFNT XJUI UIF
&OWJSPONFOU 4QFDJGJD *OGPSNBUJPO )1 69 B$$ *1' O )1 69 J BOE PQFSBUJOH TZTUFN O "O BQQMJDBUJPO DPNQJMFE XJUI )1 B$$ O "O BQQMJDBUJPO CVJMU VTJOH UIF )1 69 OBUJWF LFSOFM UISFBEJOH NPEFM QPTJY ESBGU UISFBET 4PMBSJT O 4VO 4PMBSJT BOE PQFSBUJOH TZTUFNT O 4VO 41"3$TUBUJPO O "O BQQMJDBUJPO DPNQJMFE XJUI 4VO $ 4VO 4UVEJP PO 4PMBSJT O "O BQQMJDBUJPO CVJMU VTJOH UIF 4PMBSJT OBUJWF LFSOFM UISFBEJOH NPEFM -JOVY O 5IF GPMMPXJOH -JOVY
$IBQUFS 6TJOH 5IF 1SPEVDU #JU %SJWFST O "MM SFRVJSFE OFUXPSL TPGUXBSF TVQQMJFE CZ ZPVS EBUBCBTF TZTUFN WFOEPST NVTU CF CJU DPNQMJBOU "*9 O 1PXFS 1$ O "*9 - BOE PQFSBUJOH TZTUFN O "O BQQMJDBUJPO DPNQJMFE XJUI 7JTVBM"HF $ 1SPGFTTJPOBM PO "*9 O "O BQQMJDBUJPO CVJMU VTJOH UIF "*9 OBUJWF UISFBEJOH NPEFM )1 69 B$$ *1' O *UBOJVN ** O )1 69 *1' J WFSTJPOT BOE # BOE # PQFSBUJOH TZTUFNT O "O BQQMJDBUJPO DPNQJMFE XJUI )1 B$$ W
&OWJSPONFOU 4QFDJGJD *OGPSNBUJPO -JOVY O ".% 0QUFSPO BOE *OUFM 9FPO &.
$IBQUFS 6TJOH 5IF 1SPEVDU #JOEJOH 1BSBNFUFS .
7FSTJPO 4USJOH *OGPSNBUJPO 7FSTJPO 4USJOH *OGPSNBUJPO 5IF ESJWFS IBT B WFSTJPO TUSJOH PG UIF GPSNBU X.YY.ZZZZ(BAAAA, UBBBB) 5IF %SJWFS .BOBHFS PO 6/*9 BOE -JOVY IBT B WFSTJPO TUSJOH PG UIF GPSNBU X.YY.ZZZZ(UBBBB) XIFSF X JT UIF NBKPS WFSTJPO PG UIF QSPEVDU YY JT UIF NJOPS WFSTJPO PG UIF QSPEVDU ZZZZ JT UIF CVJME OVNCFS PG UIF ESJWFS DPNQPOFOU AAAA JT UIF CVJME OVNCFS PG UIF ESJWFShT CBT DPNQPOFOU BBBB JT UIF CVJME OVNCFS PG UIF ESJWFShT VUM DPNQPOFOU 'PS FYBNQMF 5.1.
$IBQUFS 6TJOH 5IF 1SPEVDU 'PS FYBNQMF GPS UIF %SJWFS .BOBHFS ivtestlib libodbc.so 5.10.
3FUSJFWJOH %BUB 5ZQF *OGPSNBUJPO void ODBC_GetTypeInfo(SQLHANDLE hstmt, SQLSMALLINT dataType) { RETCODE rc; // There are 19 columns returned by SQLGetTypeInfo. // This example displays the first 3. // Check the ODBC 3.x specification for more information.
$IBQUFS 6TJOH 5IF 1SPEVDU // Print the results if ((rc == SQL_SUCCESS) || (rc == SQL_SUCCESS_WITH_INFO)) { printf ("%-30s %10i %10u\n", typeName, sqlDataType, columnSize); } } while (rc != SQL_NO_DATA); } } 'PS JOGPSNBUJPO BCPVU IPX B EBUBCBTF T EBUB UZQFT NBQ UP UIF TUBOEBSE 0%#$ EBUB UZQFT TFF UIF ESJWFS DIBQUFS JO UIJT CPPL %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ 6TFS T (VJEF BOE 3FGFSFODF
5IF /4, 42- .9 8JSF 1SPUPDPM %SJWFS 0%#$ /4, 42- .9 8JSF 5IF %BUB%JSFDU $POOFDU 4FSJFT GPS 1SPUPDPM ESJWFS UIF /4, 42- .9 8JSF 1SPUPDPM ESJWFS TVQQPSUT )1 /PO4UPQ 42- .9 EBUBCBTF WFSTJPO 5IF /4, 42- .9 8JSF 1SPUPDPM ESJWFS JT TVQQPSUFE JO UIF 6/*9 MJOVY FOWJSPONFOUT 4FF i&OWJSPONFOU 4QFDJGJD *OGPSNBUJPOw PO QBHF GPS EFUBJMFE JOGPSNBUJPO BCPVU UIF 6/*9 MJOVY FOWJSPONFOUT TVQQPSUFE CZ UIJT ESJWFS %SJWFS 3FRVJSFNFOUT 5IFSF BSF OP EBUBCBTF DMJFOU SFRVJSFNFOUT GPS UIF /4, 42- .
$IBQUFS 5IF /4, 42- .
$POOFDUJOH UP B %BUB 4PVSDF 6TJOH B $POOFDUJPO 4USJOH 5IF %4/ DPOOFDUJPO TUSJOH IBT UIF GPSN DSN=data_source_name[;attribute=value[;attribute=value]...] 5IF '*-&%4/ DPOOFDUJPO TUSJOH IBT UIF GPSN FILEDSN=filename.dsn[;attribute=value[;attribute=value]...
$IBQUFS 5IF /4, 42- .9 8JSF 1SPUPDPM %SJWFS " %4/ MFTT DPOOFDUJPO TUSJOH NVTU QSPWJEF BMM OFDFTTBSZ DPOOFDUJPO JOGPSNBUJPO DRIVER=DataDirect 5.1 NSK SQL/MX Wire Protocol; HST=NSK2;PRT=111;CATALOG=MYCATALOG;SCHEMA=MYSCHEMA; UID=JOHN;PWD=XYZZY 5BCMF /4, 42- .9 8JSF 1SPUPDPM $POOFDUJPO 4USJOH "UUSJCVUFT "UUSJCVUF %FTDSJQUJPO "VUI4US 18% " DBTF TFOTJUJWF QBTTXPSE 3FRVJSFE %BUB4PVSDF/BNF %4/ " TUSJOH UIBU JEFOUJGJFT BO /4, 42- .
%BUB 5ZQFT 5BCMF /4, 42- .9 8JSF 1SPUPDPM $POOFDUJPO 4USJOH "UUSJCVUFT DPOU "UUSJCVUF %FTDSJQUJPO /TL5SBOTBDUJPO*TPMBUJPO /TL5SBOTBDUJPO*TPMBUJPO-FWFM \ ] ] ] ^ 4QFDJGJFT UIF EFGBVMU -FWFM /5*- JTPMBUJPO MFWFM GPS DPODVSSFOU USBOTBDUJPOT XIFSF 3&"% 6/$0..*5&% 3&"% $0..*55&% 3&1&"5"#-& 3&"% 4&3*"-*;"#-& 5IF JOJUJBM EFGBVMU JT /TL8JOEPX5FYU /85 $IBSBDUFS TUSJOH PG UFYU BT EJTQMBZFE JO /4.
$IBQUFS 5IF /4, 42- .9 8JSF 1SPUPDPM %SJWFS 5BCMF /4, 42- .9 %BUB 5ZQFT DPOU /4, 42- .9 0%#$ %FDJNBM VOTJHOFE 42-@%&$*."- %PVCMF QSFDJTJPO 42-@%06#-& 'MPBU 42-@'-0"5 *OUFHFS 42-@*/5&(&3 *OUFHFS TJHOFE 42-@*/5&(&3 *OUFHFS VOTJHOFE 42-@*/5&(&3 *OUFSWBM Q EBZ UP EBZ 42-@*/5&37"-@%": *OUFSWBM Q EBZ UP IPVS 42-@*/5&37"-@%":@50@)063 *OUFSWBM Q EBZ UP NJOVUF 42-@*/5&37"-@%":@50@.
1FSTJTUJOH B 3FTVMU 4FU BT BO 9.- %BUB 'JMF 5BCMF /4, 42- .9 %BUB 5ZQFT DPOU /4, 42- .9 0%#$ 5JNFTUBNQ 42-@5:1&@5*.&45".1 7BSDIBS 42-@7"3$)"3 4FF i3FUSJFWJOH %BUB 5ZQF *OGPSNBUJPOw PO QBHF GPS NPSF JOGPSNBUJPO BCPVU EBUB UZQFT 1FSTJTUJOH B 3FTVMU 4FU BT BO 9.- %BUB 'JMF 5IJT ESJWFS BMMPXT ZPV UP QFSTJTU B SFTVMU TFU BT BO 9.- EBUB GJMF XJUI FNCFEEFE TDIFNB 5P JNQMFNFOU 9.
$IBQUFS 5IF /4, 42- .9 8JSF 1SPUPDPM %SJWFS /05& " OFX TUBUFNFOU BUUSJCVUF JT BWBJMBCMF UP TVQQPSU 9.- QFSTJTUFODF 42-@1&34*45@"4@9.- " DMJFOU BQQMJDBUJPO NVTU DBMM 42-4FU4UNU"UUS XJUI UIJT OFX BUUSJCVUF BT BO BSHVNFOU 4FF UIF GPMMPXJOH UBCMF GPS UIF EFGJOJUJPO PG WBMJE BSHVNFOUT GPS 42-4FU4UNU"UUS "SHVNFOU %FGJOJUJPO 4UBUFNFOU)BOEMF 5IF IBOEMF PG UIF TUBUFNFOU UIBU DPOUBJOT UIF SFTVMU TFU UP QFSTJTU BT 9.- "UUSJCVUF 42-@1&34*45@"4@9.
*TPMBUJPO BOE -PDL -FWFMT 4VQQPSUFE 6TJOH UIF 9.- 1FSTJTUFODF %FNP 5PPM 0O 6/*9 MJOVY UIF QSPEVDU JT TIJQQFE XJUI BO 9.- QFSTJTUFODF EFNP UPPM OBNFE EFNPPECD 5IJT UPPM JT JOTUBMMFE JO UIF EFNP TVCEJSFDUPSZ PG UIF JOTUBMMBUJPO EJSFDUPSZ 'PS JOGPSNBUJPO BCPVU IPX UP VTF UIJT UPPM SFGFS UP UIF EFNPPECD UYU GJMF JOTUBMMFE JO UIF EFNP EJSFDUPSZ *TPMBUJPO BOE -PDL -FWFMT 4VQQPSUFE /4, 42- .
$IBQUFS 5IF /4, 42- .9 8JSF 1SPUPDPM %SJWFS /VNCFS PG $POOFDUJPOT BOE 4UBUFNFOUT 4VQQPSUFE 5IF /4, 42- .9 8JSF 1SPUPDPM ESJWFS TVQQPSUT NVMUJQMF DPOOFDUJPOT BOE POF TUBUFNFOU QFS DPOOFDUJPO UP UIF /PO4UPQ 42- .
" 0%#$ "1* BOE 4DBMBS 'VODUJPOT 5IJT BQQFOEJY MJTUT UIF 0%#$ "1* GVODUJPOT UIBU UIF %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ ESJWFST TVQQPSU BOE UIF TDBMBS GVODUJPOT XIJDI ZPV VTF JO 42- TUBUFNFOUT 5IJT BQQFOEJY JODMVEFT UIF GPMMPXJOH O i"1* 'VODUJPOTw PO QBHF O i4DBMBS 'VODUJPOTw PO QBHF "1* 'VODUJPOT 0%#$ ESJWFST TVQQPSU BMM 0%#$ 5IF %BUB%JSFDU $POOFDU 4FSJFT GPS $PSF BOE -FWFM GVODUJPOTUIFZ BSF 0%#$ -FWFM oDPNQMJBOU 5IFZ BMTP TVQQPSU B MJNJUFE TFU PG -FWFM GVODUJPOT 5IF
"QQFOEJY " 0%#$ "1* BOE 4DBMBS 'VODUJPOT 5BCMF " 'VODUJPO $POGPSNBODF GPS Y 0%#$ "QQMJDBUJPOT $PSF 'VODUJPOT -FWFM 'VODUJPOT 42-"MMPD$POOFDU 42-$PMVNOT 42-"MMPD&OW 42-%SJWFS$POOFDU 42-"MMPD4UNU 42-(FU$POOFDU0QUJPO 42-#JOE$PM 42-(FU%BUB 42-#JOE1BSBNFUFS 42-(FU'VODUJPOT 42-$BODFM 42-(FU*OGP 42-$PM"UUSJCVUFT 42-(FU4UNU0QUJPO 42-$POOFDU 42-(FU5ZQF*OGP 42-%FTDSJCF$PM 42-1BSBN%BUB 42-%JTDPOOFDU 42-1VU%BUB 42-%SJWFST 42-4FU$POOFDU0QUJPO 42-&SSPS 42-4FU4UNU0QUJPO 42-&YFD%J
"1* 'VODUJPOT 5BCMF " 'VODUJPO $POGPSNBODF GPS Y 0%#$ "QQMJDBUJPOT 42-"MMPD)BOEMF 42-(FU%BUB 42-#JOE$PM 42-(FU%FTD'JFME 42-#JOE1BSBNFUFS 42-(FU%FTD3FD 42-#SPXTF$POOFDU 42-(FU%JBH'JFME 42-#VML0QFSBUJPOT 42-(FU%JBH3FD 42-$BODFM 42-(FU&OW"UUS 42-$MPTF$VSTPS 42-(FU'VODUJPOT 42-$PM"UUSJCVUF 42-(FU*OGP 42-$PMVNOT 42-(FU4UNU"UUS 42-$POOFDU 42-(FU5ZQF*OGP 42-$PQZ%FTD 42-.
"QQFOEJY " 0%#$ "1* BOE 4DBMBS 'VODUJPOT 4DBMBS 'VODUJPOT 5IJT TFDUJPO MJTUT UIF TDBMBS GVODUJPOT UIBU 0%#$ TVQQPSUT :PVS EBUBCBTF TZTUFN NBZ OPU TVQQPSU BMM PG UIFTF GVODUJPOT 4FF UIF EPDVNFOUBUJPO GPS ZPVS EBUBCBTF TZTUFN UP GJOE PVU XIJDI GVODUJPOT BSF TVQQPSUFE "MTP EFQFOEJOH PO UIF ESJWFS UIBU ZPV BSF VTJOH BMM PG UIF TDBMBS GVODUJPOT NBZ OPU CF TVQQPSUFE 5P DIFDL XIJDI TDBMBS GVODUJPOT BSF TVQQPSUFE CZ B ESJWFS VTF UIF 42-(FU*OGP 0%#$ GVODUJPO :PV DBO VTF UIFTF GVODUJPOT JO 42-
4DBMBS 'VODUJPOT $IBSBDUFS TUSJOH MJUFSBMT NVTU CF TVSSPVOEFE JO TJOHMF RVPUBUJPO NBSLT 5BCMF " 4DBMBS 4USJOH 'VODUJPOT 'VODUJPO "4$** 3FUVSOT string_exp string_exp "4$** DPEF WBMVF PG UIF MFGUNPTU DIBSBDUFS PG BT BO JOUFHFS #*5@-&/(5) string_exp 5IF MFOHUI JO CJUT PG UIF TUSJOH FYQSFTTJPO <0%#$ POMZ> $)"3 code code code TIPVME CF CFUXFFO BOE PUIFSXJTF UIF SFUVSO 5IF DIBSBDUFS XJUI UIF "4$** DPEF WBMVF TQFDJGJFE CZ WBMVF JT EBUB TPVSDF EFQFOEFOU $)"3@-&/(5) string
"QQFOEJY " 0%#$ "1* BOE 4DBMBS 'VODUJPOT 5BCMF " 4DBMBS 4USJOH 'VODUJPOT DPOU 'VODUJPO 3FUVSOT string_exp1 string_exp2< start> 5IF TUBSUJOH QPTJUJPO PG UIF GJSTU PDDVSSFODF PG -0$"5& string_exp1 XJUIJO string_exp2 *G start JT OPU TQFDJGJFE UIF TFBSDI CFHJOT XJUI UIF GJSTU DIBSBDUFS string_exp2 *G start JT TQFDJGJFE UIF TFBSDI QPTJUJPO JO CFHJOT XJUI UIF DIBSBDUFS QPTJUJPO JOEJDBUFE CZ UIF WBMVF start 5IF GJSTU DIBSBDUFS QPTJUJPO JO string_exp2 JT string_exp1 JT OPU GPVO
4DBMBS 'VODUJPOT /VNFSJD 'VODUJPOT 5BCMF " MJTUT UIF OVNFSJD GVODUJPOT UIBU 0%#$ TVQQPSUT 5IF OVNFSJD GVODUJPOT MJTUFE DBO UBLF UIF GPMMPXJOH BSHVNFOUT O OVNFSJD@FYQ DBO CF B DPMVNO OBNF B OVNFSJD MJUFSBM PS UIF SFTVMU PG BOPUIFS TDBMBS GVODUJPO XIFSF UIF VOEFSMZJOH EBUB UZQF JT 42-@/6.&3*$ 42-@%&$*."- 42-@5*/:*/5 42-@4.
"QQFOEJY " 0%#$ "1* BOE 4DBMBS 'VODUJPOT 5BCMF " 4DBMBS /VNFSJD 'VODUJPOT DPOU 'VODUJPO 3FUVSOT &91 GMPBU@FYQ &YQPOFOUJBM WBMVF PG GMPBU@FYQ '-003 OVNFSJD@FYQ -BSHFTU JOUFHFS MFTT UIBO PS FRVBM UP OVNFSJD@FYQ -0( GMPBU@FYQ /BUVSBM MPH PG GMPBU@FYQ -0( GMPBU@FYQ #BTF MPH PG GMPBU@FYQ .
4DBMBS 'VODUJPOT %BUF BOE 5JNF 'VODUJPOT 5BCMF " MJTUT UIF EBUF BOE UJNF GVODUJPOT UIBU 0%#$ TVQQPSUT 5IF EBUF BOE UJNF GVODUJPOT MJTUFE DBO UBLF UIF GPMMPXJOH BSHVNFOUT O EBUF@FYQ DBO CF B DPMVNO OBNF B EBUF PS UJNFTUBNQ MJUFSBM PS UIF SFTVMU PG BOPUIFS TDBMBS GVODUJPO XIFSF UIF VOEFSMZJOH EBUB UZQF DBO CF SFQSFTFOUFE BT 42-@$)"3 42-@7"3$)"3 42-@%"5& PS 42-@5*.&45".
"QQFOEJY " 0%#$ "1* BOE 4DBMBS 'VODUJPOT 5BCMF " 4DBMBS 5JNF BOE %BUF 'VODUJPOT DPOU 'VODUJPO %":/".& EBUF@FYQ 3FUVSOT $IBSBDUFS TUSJOH DPOUBJOJOH B EBUB TPVSDF TQFDJGJD OBNF PG UIF EBZ GPS UIF EBZ QPSUJPO PG EBUF@FYQ %":0'.
4DBMBS 'VODUJPOT 5BCMF " 4DBMBS 5JNF BOE %BUF 'VODUJPOT DPOU 'VODUJPO 3FUVSOT 5*.&45".1%*'' JOUFSWBM UJNF@FYQ *OUFHFS OVNCFS PG JOUFSWBMT PG UZQF JOUFSWBM CZ UJNF@FYQ XIJDI UJNF@FYQ JT HSFBUFS UIBO UJNF@FYQ JOUFSWBM IBT UIF TBNF WBMVFT BT 5*.&45".
"QQFOEJY " 0%#$ "1* BOE 4DBMBS 'VODUJPOT %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ 6TFS T (VJEF BOE 3FGFSFODF
# -PDLJOH BOE *TPMBUJPO -FWFMT 5IJT BQQFOEJY EJTDVTTFT MPDLJOH BOE JTPMBUJPO MFWFMT BOE IPX UIFJS TFUUJOHT DBO BGGFDU UIF EBUB ZPV SFUSJFWF %JGGFSFOU EBUBCBTF TZTUFNT TVQQPSU EJGGFSFOU MPDLJOH BOE JTPMBUJPO MFWFMT 4FF UIF TFDUJPO *TPMBUJPO BOE -PDL -FWFMT 4VQQPSUFE JO UIF ESJWFS DIBQUFS 5IJT BQQFOEJY JODMVEFT UIF GPMMPXJOH O i-PDLJOHw PO QBHF O i*TPMBUJPO -FWFMTw PO QBHF O i-PDLJOH .
"QQFOEJY # -PDLJOH BOE *TPMBUJPO -FWFMT *TPMBUJPO -FWFMT "O JTPMBUJPO MFWFM SFQSFTFOUT B QBSUJDVMBS MPDLJOH TUSBUFHZ FNQMPZFE JO UIF EBUBCBTF TZTUFN UP JNQSPWF EBUB DPOTJTUFODZ 5IF IJHIFS UIF JTPMBUJPO MFWFM UIF NPSF DPNQMFY UIF MPDLJOH TUSBUFHZ CFIJOE JU 5IF JTPMBUJPO MFWFM QSPWJEFE CZ UIF EBUBCBTF EFUFSNJOFT XIFUIFS B USBOTBDUJPO XJMM FODPVOUFS UIF GPMMPXJOH CFIBWJPST JO EBUB DPOTJTUFODZ %JSUZ SFBET 6TFS NPEJGJFT B SPX 6TFS SFBET UIF TBNF SPX CFGPSF 6TFS DPNNJUT 6TFS QFSGPS
*TPMBUJPO -FWFMT *TPMBUJPO MFWFMT SFQSFTFOU UIF EBUBCBTF TZTUFN T BCJMJUZ UP QSFWFOU UIFTF CFIBWJPST 5IF "NFSJDBO /BUJPOBM 4UBOEBSET *OTUJUVUF "/4* EFGJOFT GPVS JTPMBUJPO MFWFMT O O O O 3FBE VODPNNJUUFE 3FBE DPNNJUUFE 3FQFBUBCMF SFBE 4FSJBMJ[BCMF *O BTDFOEJOH PSEFS o UIFTF JTPMBUJPO MFWFMT QSPWJEF BO JODSFBTJOH BNPVOU PG EBUB DPOTJTUFODZ UP UIF USBOTBDUJPO "U UIF MPXFTU MFWFM BMM UISFF CFIBWJPST DBO PDDVS "U UIF IJHIFTU MFWFM OPOF DBO PDDVS 5IF TVDDFTT PG FBDI MFWFM JO
"QQFOEJY # -PDLJOH BOE *TPMBUJPO -FWFMT 5BCMF # TIPXT XIBU EBUB DPOTJTUFODZ CFIBWJPST DBO PDDVS BU FBDI JTPMBUJPO MFWFM 5BCMF # *TPMBUJPO -FWFMT BOE %BUB $POTJTUFODZ /POSFQFBUBCMF 1IBOUPN -FWFM %JSUZ 3FBE 3FBE 3FBE 3FBE VODPNNJUUFE :FT :FT :FT 3FBE DPNNJUUFE /P :FT :FT 3FQFBUBCMF SFBE /P /P :FT 4FSJBMJ[BCMF /P /P /P "MUIPVHI IJHIFS JTPMBUJPO MFWFMT QSPWJEF CFUUFS EBUB DPOTJTUFODZ UIJT DPOTJTUFODZ DBO CF DPTUMZ JO UFSNT PG UIF DPODVSSFODZ QSPWJEFE UP J
-PDLJOH .PEFT BOE -FWFMT -PDLJOH .
"QQFOEJY # -PDLJOH BOE *TPMBUJPO -FWFMT %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ 6TFS T (VJEF BOE 3FGFSFODF
$ 5ISFBEJOH 5IF 0%#$ TQFDJGJDBUJPO NBOEBUFT UIBU BMM ESJWFST NVTU CF UISFBE TBGF UIBU JT ESJWFST NVTU OPU GBJM XIFO EBUBCBTF SFRVFTUT BSF NBEF PO TFQBSBUF UISFBET *U JT B DPNNPO NJTQFSDFQUJPO UIBU JTTVJOH SFRVFTUT PO TFQBSBUF UISFBET XJMM BMXBZT SFTVMU JO JNQSPWFE UISPVHIQVU #FDBVTF PG OFUXPSL USBOTQPSU BOE EBUBCBTF TFSWFS MJNJUBUJPOT TPNF ESJWFST NBZ TFSJBMJ[F UISFBEFE SFRVFTUT UP UIF TFSWFS UP FOTVSF UISFBE TBGFUZ 5IF 0%#$ TQFDJGJDBUJPO EPFT OPU QSPWJEF B NFUIPE UP GJOE PVU IPX B E
"QQFOEJY $ 5ISFBEJOH $POTJEFS UIF GPMMPXJOH DPEF GSBHNFOU rc = SQLGetInfo (hdbc, 1028, &ThreadModel, NULL, NULL); If (rc == SQL_SUCCESS) { // driver is a DataDirect driver which can report // threading information if (ThreadModel == 0) // driver is unconditionally thread enabled // application can take advantage of threading else if (ThreadModel == 1) // driver is thread enabled when thread requests are // from different connections // some applications can take advantage of threading else if (Thr
% 6TJOH *OEFYFT 5IJT BQQFOEJY EJTDVTTFT UIF XBZT JO XIJDI ZPV DBO JNQSPWF UIF QFSGPSNBODF PG EBUBCBTF BDUJWJUZ VTJOH JOEFYFT *U QSPWJEFT HFOFSBM HVJEFMJOFT UIBU BQQMZ UP NPTU EBUBCBTFT $POTVMU ZPVS EBUBCBTF WFOEPS T EPDVNFOUBUJPO GPS NPSF EFUBJMFE JOGPSNBUJPO 'PS JOGPSNBUJPO SFHBSEJOH IPX UP DSFBUF BOE ESPQ JOEFYFT TFF ZPVS EBUBCBTF TZTUFN EPDVNFOUBUJPO *OUSPEVDUJPO "O JOEFY JT B EBUBCBTF TUSVDUVSF UIBU ZPV DBO VTF UP JNQSPWF UIF QFSGPSNBODF PG EBUBCBTF BDUJWJUZ " EBUBCBTF UBCMF DBO IBWF
"QQFOEJY % 6TJOH *OEFYFT INDEX E00127 E01234 E03033 E04242 E10001 E10297 E16398 E21437 E27002 E41298 E43128 E63535 TABLE Tyler John George Adam David Rich Nathan Richard David Tim Kim Timothy Bennett E10297 Rappl E21437 Woltman E00127 Smith E63535 McClellan E04242 Holcomb E01234 Adams E41298 Potter E43128 Motsinger E27002 Sampair E03033 Arlich E10001 Grove E16398 " EBUBCBTF ESJWFS DBO VTF JOEFYFT UP GJOE SFDPSET RVJDLMZ "O JOEFY PO UIF &.
*NQSPWJOH 3FDPSE 4FMFDUJPO 1FSGPSNBODF *NQSPWJOH 3FDPSE 4FMFDUJPO 1FSGPSNBODF 'PS JOEFYFT UP JNQSPWF UIF QFSGPSNBODF PG TFMFDUJPOT UIF JOEFY FYQSFTTJPO NVTU NBUDI UIF TFMFDUJPO DPOEJUJPO FYBDUMZ 'PS FYBNQMF JG ZPV IBWF DSFBUFE BO JOEFY XIPTF FYQSFTTJPO JT MBTU@OBNF UIF GPMMPXJOH 4FMFDU TUBUFNFOU VTFT UIF JOEFY SELECT * FROM emp WHERE last_name = ’Smith’ 5IJT 4FMFDU TUBUFNFOU IPXFWFS EPFT OPU VTF UIF JOEFY SELECT * FROM emp WHERE UPPER(last_name) = ’SMITH’ 5IF TFDPOE TUBUFNFOU EPFT OPU VTF UIF
"QQFOEJY % 6TJOH *OEFYFT $PODBUFOBUFE JOEFYFT DBO BMTP CF VTFE GPS 8IFSF DMBVTFT UIBU DPOUBJO POMZ UIF GJSTU PG UXP DPODBUFOBUFE GJFMET 5IF -"45@/".& '*345@/".
%FDJEJOH 8IJDI *OEFYFT UP $SFBUF *O NPTU DBTFT UIF ESJWFS EPFT OPU VTF BO JOEFY JG UIF 8IFSF DMBVTF DPOUBJOT BO 03 DPNQBSJTPO PQFSBUPS 'PS FYBNQMF UIF ESJWFS EPFT OPU VTF BO JOEFY GPS UIF GPMMPXJOH 8IFSF DMBVTF WHERE emp_id >= ’E10001’ OR last_name = ’Smith’ %FDJEJOH 8IJDI *OEFYFT UP $SFBUF #FGPSF ZPV DSFBUF JOEFYFT GPS B EBUBCBTF UBCMF DPOTJEFS IPX ZPV XJMM VTF UIF UBCMF 5IF UXP NPTU DPNNPO PQFSBUJPOT PO B UBCMF BSF UP O O *OTFSU VQEBUF BOE EFMFUF SFDPSET 3FUSJFWF SFDPSET *G ZPV NPTU PGU
"QQFOEJY % 6TJOH *OEFYFT )FSF BSF B GFX SVMFT UP IFMQ ZPV EFDJEF XIJDI JOEFYFT UP DSFBUF O *G ZPVS SFDPSE SFUSJFWBMT BSF CBTFE PO POF GJFME BU B UJNF GPS FYBNQMF EFQU h% h O DSFBUF BO JOEFY PO UIFTF GJFMET *G ZPVS SFDPSE SFUSJFWBMT BSF CBTFE PO B DPNCJOBUJPO PG GJFMET MPPL BU UIF DPNCJOBUJPOT O *G UIF DPNQBSJTPO PQFSBUPS GPS UIF DPOEJUJPOT JT "/% GPS FYBNQMF $*5: h3BMFJHIh "/% 45"5& h/$h UIFO CVJME B DPODBUFOBUFE JOEFY PO UIF $*5: BOE 45"5& GJFMET 5IJT JOEFY JT BMTP VT
*NQSPWJOH +PJO 1FSGPSNBODF *NQSPWJOH +PJO 1FSGPSNBODF 8IFO KPJOJOH EBUBCBTF UBCMFT JOEFY UBCMFT DBO HSFBUMZ JNQSPWF QFSGPSNBODF 6OMFTT UIF QSPQFS JOEFYFT BSF BWBJMBCMF RVFSJFT UIBU VTF KPJOT DBO UBLF B MPOH UJNF "TTVNF ZPV IBWF UIF GPMMPXJOH 4FMFDU TUBUFNFOU SELECT * FROM dept, emp WHERE dept.dept_id = emp.dept *O UIJT FYBNQMF UIF %&15 BOE &.
"QQFOEJY % 6TJOH *OEFYFT %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ 6TFS T (VJEF BOE 3FGFSFODF
& 1FSGPSNBODF %FTJHO PG 0%#$ "QQMJDBUJPOT %FWFMPQJOH QFSGPSNBODF PSJFOUFE 0%#$ BQQMJDBUJPOT JT OPU FBTZ .
"QQFOEJY & 1FSGPSNBODF %FTJHO PG 0%#$ "QQMJDBUJPOT 5BCMF & $PNNPO 1FSGPSNBODF 1SPCMFNT 6TJOH 0%#$ "QQMJDBUJPOT DPOU 1SPCMFN 4PMVUJPO 4FF HVJEFMJOFT JO &YDFTTJWF DBMMT GSPN UIF 0QUJNJ[F BQQMJDBUJPO UP i3FUSJFWJOH %BUBw PO BQQMJDBUJPO UP UIF ESJWFS TMPX ESJWFS JOUFSBDUJPO QBHF QFSGPSNBODF i4FMFDUJOH 0%#$ 'VODUJPOTw PO QBHF %JTL JOQVU PVUQVU JT TMPX -JNJU EJTL JOQVU PVUQVU i.
6TJOH $BUBMPH 'VODUJPOT .
"QQFOEJY & 1FSGPSNBODF %FTJHO PG 0%#$ "QQMJDBUJPOT DBMM JT DPEFE BT TIPXO VTJOH UIF GFXFTU OPO OVMM BSHVNFOUT OFDFTTBSZ GPS UIF GVODUJPO UP SFUVSO TVDDFTT rc = SQLTables (NULL, NULL, NULL, NULL, "Customers", SQL_NTS, NULL); " ESJWFS QSPDFTTFT UIJT 42-5BCMFT DBMM JOUP 42- UIBU MPPLT MJLF UIJT SELECT ... FROM SysTables WHERE TableName = ’Customers’ UNION ALL SELECT ... FROM SysViews WHERE ViewName = ’Customers’ UNION ALL SELECT ... FROM SysSynonyms WHERE SynName = ’Customers’ ORDER BY ...
6TJOH $BUBMPH 'VODUJPOT 6TJOH B %VNNZ 2VFSZ UP %FUFSNJOF 5BCMF $IBSBDUFSJTUJDT "WPJE VTJOH 42-$PMVNOT UP EFUFSNJOF DIBSBDUFSJTUJDT BCPVU B UBCMF *OTUFBE VTF B EVNNZ RVFSZ XJUI 42-%FTDSJCF$PM $POTJEFS BO BQQMJDBUJPO UIBU BMMPXT UIF VTFS UP DIPPTF UIF DPMVNOT UIBU XJMM CF TFMFDUFE 4IPVME UIF BQQMJDBUJPO VTF 42-$PMVNOT UP SFUVSO JOGPSNBUJPO BCPVU UIF DPMVNOT UP UIF VTFS PS QSFQBSF B EVNNZ RVFSZ BOE DBMM 42-%FTDSJCF$PM $BTF 42-$PMVNOT .FUIPE rc // // // rc rc // // // = SQLColumns (...
"QQFOEJY & 1FSGPSNBODF %FTJHO PG 0%#$ "QQMJDBUJPOT *O CPUI DBTFT B RVFSZ JT TFOU UP UIF TFSWFS CVU JO $BTF UIF RVFSZ NVTU CF FWBMVBUFE BOE GPSN B SFTVMU TFU UIBU NVTU CF TFOU UP UIF DMJFOU $MFBSMZ $BTF JT UIF CFUUFS QFSGPSNJOH NPEFM 5P DPNQMJDBUF UIJT EJTDVTTJPO MFU VT DPOTJEFS B EBUBCBTF TFSWFS UIBU EPFT OPU OBUJWFMZ TVQQPSU QSFQBSJOH B 42- TUBUFNFOU 5IF QFSGPSNBODF PG $BTF EPFT OPU DIBOHF CVU UIF QFSGPSNBODF PG $BTF JNQSPWFT TMJHIUMZ CFDBVTF UIF EVNNZ RVFSZ JT FWBMVBUFE CF
3FUSJFWJOH %BUB TFOEJOH UIF RVFSZ UP UIF 0%#$ ESJWFS UIBU JT TPNF BQQMJDBUJPOT TJNQMZ SELECT * FROM table_name ...
"QQFOEJY & 1FSGPSNBODF %FTJHO PG 0%#$ "QQMJDBUJPOT rc = SQLGetData (hstmt, 1, CaseContainer,(SWORD) sizeof(CaseContainer), ...
3FUSJFWJOH %BUB 4VQQPTF UIF RVFSZ SFUVSOT SFTVMU SPXT *O UIJT DBTF NPSF UIBO 0%#$ DBMMT BSF NBEF DBMMT UP 42-(FU%BUB Y SFTVMU SPXT DBMMT UP 42-'FUDI $POTJEFS UIF TBNF TDFOBSJP UIBU VTFT 42-#JOE$PM JOTUFBE PG 42-(FU%BUB rc = SQLExecDirect (hstmt, "SELECT <20 columns> FROM Employees WHERE HireDate >= ?", SQL_NTS); // call SQLBindCol 20 times do { rc = SQLFetch (hstmt); } while ((rc == SQL_SUCCESS) || (rc == SQL_SUCCESS_WITH_INFO)); 5IF OVNCFS PG 0%#$ DBMMT NBEF JT SFEVDFE GSPN
"QQFOEJY & 1FSGPSNBODF %FTJHO PG 0%#$ "QQMJDBUJPOT SFUSJFWF EBUB "HBJO DPOTJEFS UIF QSFDFEJOH FYBNQMF VTJOH 42-&YUFOEFE'FUDI JOTUFBE PG 42-'FUDI rc = SQLSetStmtOption (hstmt, SQL_ROWSET_SIZE, 100); // use arrays of 100 elements rc = SQLExecDirect (hstmt, "SELECT <20 columns> FROM Employees WHERE HireDate >= ?", SQL_NTS); // call SQLBindCol 1 time specifying row-wise binding do { rc = SQLExtendedFetch (hstmt, SQL_FETCH_NEXT, 0, &RowsFetched,RowStatus); } while ((rc == SQL_SUCCESS) || (rc == SQL_
4FMFDUJOH 0%#$ 'VODUJPOT $IPPTJOH UIF 3JHIU %BUB 5ZQF "EWBODFT JO QSPDFTTPS UFDIOPMPHZ CSPVHIU TJHOJGJDBOU JNQSPWFNFOUT UP UIF XBZ UIBU PQFSBUJPOT TVDI BT GMPBUJOH QPJOU NBUI BSF IBOEMFE IPXFWFS SFUSJFWJOH BOE TFOEJOH DFSUBJO EBUB UZQFT BSF TUJMM FYQFOTJWF XIFO UIF BDUJWF QPSUJPO PG ZPVS BQQMJDBUJPO XJMM OPU GJU JOUP PO DIJQ DBDIF 8IFO ZPV BSF XPSLJOH XJUI EBUB PO B MBSHF TDBMF JU JT TUJMM JNQPSUBOU UP TFMFDU UIF EBUB UZQF UIBU DBO CF QSPDFTTFE NPTU FGGJDJFOUMZ 'PS FYBNQMF JOUFHFS EBUB JT QSPD
"QQFOEJY & 1FSGPSNBODF %FTJHO PG 0%#$ "QQMJDBUJPOT 0%#$ ESJWFST BSF PQUJNJ[FE CBTFE PO UIF QFSDFJWFE VTF PG UIF GVODUJPOT UIBU BSF CFJOH FYFDVUFE 42-1SFQBSF 42-&YFDVUF JT PQUJNJ[FE GPS NVMUJQMF FYFDVUJPOT PG TUBUFNFOUT UIBU VTF QBSBNFUFS NBSLFST 42-&YFD%JSFDU JT PQUJNJ[FE GPS B TJOHMF FYFDVUJPO PG B 42- TUBUFNFOU 6OGPSUVOBUFMZ NPSF UIBO PG BMM 0%#$ BQQMJDBUJPOT VTF 42-1SFQBSF 42-&YFDVUF FYDMVTJWFMZ $POTJEFS UIF DBTF XIFSF BO 0%#$ ESJWFS JNQMFNFOUT 42-1SFQBSF CZ DSFBUJOH B TUPSFE QSPD
4FMFDUJOH 0%#$ 'VODUJPOT O 42-@"553@1"3".@45"564@153 QPJOUT UP BO BSSBZ JO XIJDI TUBUVT JOGPSNBUJPO GPS FBDI SPX PG QBSBNFUFS WBMVFT JT SFUVSOFE /05& 8JUI 0%#$ Y DBMMT UP 42-4FU4UNU"UUS XJUI UIF 42-@"553@1"3".4&5@4*;& 42-@"553@1"3".4@130$&44&%@"33": BOE 42-@"553@1"3".
"QQFOEJY & 1FSGPSNBODF %FTJHO PG 0%#$ "QQMJDBUJPOT // pass 100 parameters per execute // bind parameters ... do { // read up to 100 ledger values into // bound parameter buffers ...
.BOBHJOH $POOFDUJPOT BOE 6QEBUFT QSPEVDF B TDSPMMBCMF SFTVMU TFU JOTUFBE PG FNVMBUJOH UIF DBQBCJMJUZ CZ DSFBUJOH MPH GJMFT .BOZ BQQMJDBUJPOT VTF rc = SQLSetConnectOption (hdbc, SQL_ODBC_CURSORS, SQL_CUR_USE_ODBC); CVU TIPVME VTF rc = SQLSetConnectOption (hdbc, SQL_ODBC_CURSORS, SQL_CUR_USE_IF_NEEDED); .BOBHJOH $POOFDUJPOT BOE 6QEBUFT 5IF HVJEFMJOFT JO UIJT TFDUJPO XJMM IFMQ ZPV UP NBOBHF DPOOFDUJPOT BOE VQEBUFT UP JNQSPWF TZTUFN QFSGPSNBODF GPS ZPVS 0%#$ BQQMJDBUJPOT .
"QQFOEJY & 1FSGPSNBODF %FTJHO PG 0%#$ "QQMJDBUJPOT "OPUIFS CBE QSBDUJDF JT UP DPOOFDU BOE EJTDPOOFDU TFWFSBM UJNFT UISPVHIPVU ZPVS BQQMJDBUJPO UP QSPDFTT 42- TUBUFNFOUT $POOFDUJPO IBOEMFT DBO IBWF NVMUJQMF TUBUFNFOU IBOEMFT BTTPDJBUFE XJUI UIFN 4UBUFNFOU IBOEMFT DBO QSPWJEF NFNPSZ TUPSBHF GPS JOGPSNBUJPO BCPVU 42- TUBUFNFOUT 5IFSFGPSF BQQMJDBUJPOT EP OPU OFFE UP BMMPDBUF OFX DPOOFDUJPO IBOEMFT UP QSPDFTT 42- TUBUFNFOUT *OTUFBE BQQMJDBUJPOT TIPVME VTF TUBUFNFOU IBOEMFT UP NBOBHF NVMUJQMF
.BOBHJOH $POOFDUJPOT BOE 6QEBUFT 4PNF EBUBCBTF TFSWFST EP OPU QSPWJEF BO "VUPDPNNJU NPEF 'PS UIJT UZQF PG TFSWFS UIF 0%#$ ESJWFS NVTU FYQMJDJUMZ JTTVF B $0..
"QQFOEJY & 1FSGPSNBODF %FTJHO PG 0%#$ "QQMJDBUJPOT *O BEEJUJPO UP NBLJOH UIF BQQMJDBUJPO NPSF NBJOUBJOBCMF QPTJUJPOBM VQEBUFT VTVBMMZ SFTVMU JO JNQSPWFE QFSGPSNBODF #FDBVTF UIF EBUBCBTF TFSWFS JT BMSFBEZ QPTJUJPOFE PO UIF SPX GPS UIF 4FMFDU TUBUFNFOU JO QSPDFTT QFSGPSNBODF FYQFOTJWF PQFSBUJPOT UP MPDBUF UIF SPX UP CF DIBOHFE BSF OPU OFFEFE *G UIF SPX NVTU CF MPDBUFE UIF TFSWFS UZQJDBMMZ IBT BO JOUFSOBM QPJOUFS UP UIF SPX BWBJMBCMF GPS FYBNQMF 308*% 6TJOH 42-4QFDJBM$PMVNOT 6TF 42-4QF
.BOBHJOH $POOFDUJPOT BOE 6QEBUFT UIBU JEFOUJGJFT B HJWFO SFDPSE .
"QQFOEJY & 1FSGPSNBODF %FTJHO PG 0%#$ "QQMJDBUJPOT %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ 6TFS T (VJEF BOE 3FGFSFODF
' 7BMVFT GPS *"/""QQ$PEF1BHF $POOFDUJPO 4USJOH "UUSJCVUF 5BCMF ' MJTUT TVQQPSUFE WBMVFT BMPOH XJUI B EFTDSJQUJPO GPS UIF *"/""QQ$PEF1BHF DPOOFDUJPO TUSJOH BUUSJCVUF BU UIF UJNF PG UIJT QVCMJDBUJPO 4VQQPSU GPS BEEJUJPOBM WBMVFT NBZ IBWF CFFO BEEFE TJODF QVCMJDBUJPO UJNF UIFSFGPSF GPS VQ UP EBUF WBMVFT HP UP IUUQ XXX EBUBEJSFDU DPN TVQQPSU USPVCMFTIPPUJOH TV GBR JBOB JOEFY TTQ 4FF UIF BQQSPQSJBUF JOEJWJEVBM ESJWFS DIBQUFS GPS JOGPSNBUJPO BCPVU UIJT BUUSJCVUF 5P EFUFSNJOF UIF DPSSFD
"QQFOEJY ' 7BMVFT GPS *"/""QQ$PEF1BHF $POOFDUJPO 4USJOH "UUSJCVUF 5BCMF ' *"/""QQ$PEF1BHF 7BMVFT 7BMVF .
"QQFOEJY ' 7BMVFT GPS *"/""QQ$PEF1BHF $POOFDUJPO 4USJOH "UUSJCVUF 5BCMF ' *"/""QQ$PEF1BHF 7BMVFT DPOU 7BMVF .*#FOVN %FTDSJQUJPO *#. *#. *#. *#. 8*/%084 + (# #JH ."$*/504) *#. *#. *#. *#. *#. *#. *#. *#. *#. *#. *#. *#. *#. *#. *#. *#. *#. *#.
"QQFOEJY ' 7BMVFT GPS *"/""QQ$PEF1BHF $POOFDUJPO 4USJOH "UUSJCVUF 5BCMF ' *"/""QQ$PEF1BHF 7BMVFT DPOU 7BMVF .*#FOVN %FTDSJQUJPO *#. *#. *#. *#. *#. *#. *#. ,0* @3 );@(#@ *#. *#. *#. *#. *#. *#. *#. *#. *#. *#. *#. *#. *#. *#.
"QQFOEJY ' 7BMVFT GPS *"/""QQ$PEF1BHF $POOFDUJPO 4USJOH "UUSJCVUF 5BCMF ' *"/""QQ$PEF1BHF 7BMVFT DPOU 7BMVF .*#FOVN %FTDSJQUJPO 8*/%084@ 8*/%084@ 8*/%084@ 8*/%084@ 5*4@ *#. *#. @1 " *#. *#. *#.
"QQFOEJY ' 7BMVFT GPS *"/""QQ$PEF1BHF $POOFDUJPO 4USJOH "UUSJCVUF %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ 6TFS T (VJEF BOE 3FGFSFODF
( 5IF 6/*9 -JOVY &OWJSPONFOUT 5IJT BQQFOEJY DPOUBJOT TQFDJGJD JOGPSNBUJPO BCPVU VTJOH %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ JO UIF 6/*9 BOE -JOVY FOWJSPONFOUT *U EJTDVTTFT UIF GPMMPXJOH O i&OWJSPONFOU 7BSJBCMFTw PO QBHF O i5IF JWUFTUMJC EEUFTUMJC 5PPMw PO QBHF O i%BUB 4PVSDF $POGJHVSBUJPOw PO QBHF O iEFNPPECDw PO QBHF O iFYBNQMFw PO QBHF O i%4/ MFTT $POOFDUJPOTw PO QBHF O i'JMF %BUB 4PVSDFTw PO QBHF O i65' "QQMJDBUJPOT PO 6/*9 BOE -JOVYw PO QBHF
"QQFOEJY ( 5IF 6/*9 -JOVY &OWJSPONFOUT 3FRVJSFE &OWJSPONFOU 7BSJBCMFT .PTU PG UIF WBSJBCMFT DBO CF TFU CZ FYFDVUJOH UIF BQQSPQSJBUF TIFMM TDSJQU MPDBUFE JO UIF 0%#$ IPNF EJSFDUPSZ 'PS FYBNQMF $ TIFMM BOE SFMBUFE TIFMM VTFST TIPVME FYFDVUF UIF GPMMPXJOH DPNNBOE CFGPSF BUUFNQUJOH UP VTF 0%#$ FOBCMFE BQQMJDBUJPOT % source ./odbc.csh #PVSOF TIFMM BOE SFMBUFE TIFMM VTFST TIPVME JOJUJBMJ[F UIFJS FOWJSPONFOU BT GPMMPXT $ . ./odbc.
&OWJSPONFOU 7BSJBCMFT UIJT GJMF OBNF PS UP SFOBNF UIF GJMF *O FJUIFS DBTF UIF FOWJSPONFOU WBSJBCMF 0%#$*/* SFDPHOJ[FE CZ UIF %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ ESJWFS NVTU CF TFU UP QPJOU UP UIF GVMMZ RVBMJGJFE QBUI OBNF PG UIF TZTUFN JOGPSNBUJPO GJMF 'PS FYBNQMF UP QPJOU UP UIF EFGBVMU MPDBUJPO PG UIF GJMF PECD JOJ JO UIF $ TIFMM ZPV XPVME TFU UIJT WBSJBCMF BT GPMMPXT setenv ODBCINI /opt/odbc32v51/odbc.ini PS setenv ODBCINI /opt/odbc64v50/odbc.
"QQFOEJY ( 5IF 6/*9 -JOVY &OWJSPONFOUT 5IF JWUFTUMJC EEUFTUMJC 5PPM 5IF TFDPOE TUFQ JO QSFQBSJOH UP VTF B ESJWFS JT UP UFTU MPBE JU 5IF JWUFTUMJC EEUFTUMJC GPS UIF CJU ESJWFST UPPM JT QSPWJEFE UP IFMQ EJBHOPTF DPOGJHVSBUJPO QSPCMFNT JO UIF 6/*9 BOE -JOVY FOWJSPONFOUT TVDI BT FOWJSPONFOU WBSJBCMFT OPU DPSSFDUMZ TFU PS NJTTJOH EBUBCBTF DMJFOU DPNQPOFOUT 5IJT UPPM JT JOTUBMMFE JO UIF CJO TVCEJSFDUPSZ JO UIF QSPEVDU JOTUBMMBUJPO EJSFDUPSZ *U BUUFNQUT UP MPBE B TQFDJGJFE 0%#$ ESJWFS BOE Q
%BUB 4PVSDF $POGJHVSBUJPO %BUB 4PVSDF $POGJHVSBUJPO *O UIF 6/*9 BOE -JOVY FOWJSPONFOUT UIFSF JT OP 0%#$ "ENJOJTUSBUPS CVU B DFOUSBMJ[FE TZTUFN JOGPSNBUJPO GJMF DBO CF VTFE UP TUPSF EBUB TPVSDFT 5P DPOGJHVSF B EBUB TPVSDF ZPV NVTU DSFBUF B EBUB TPVSDF EFGJOJUJPO CZ FEJUJOH UIF TZTUFN JOGPSNBUJPO GJMF 4FUVQ JOTUBMMT B EFGBVMU WFSTJPO PG UIJT GJMF DBMMFE PECD JOJ JO UIF JOTUBMMBUJPO EJSFDUPSZ TFF i0%#$*/*w PO QBHF GPS EFUBJMT BCPVU SFMPDBUJOH BOE SFOBNJOH UIJT GJMF 5IJT B QMBJO UFYU GJMF U
"QQFOEJY ( 5IF 6/*9 -JOVY &OWJSPONFOUT 4FF i4BNQMF 4ZTUFN *OGPSNBUJPO 'JMFw PO QBHF GPS BO FYBNQMF 5SBOTMBUPST %BUB%JSFDU QSPWJEFT B TBNQMF USBOTMBUPS OBNFE 0&.
EFNPPECD PECD JOJ GJMF ZPV NVTU TVQQMZ UIFTF WBMVFT BOE SFNPWF UIF BOHMF CSBDLFUT CFGPSF UIBU EBUB TPVSDF TFDUJPO XJMM PQFSBUF QSPQFSMZ [ODBC Data Sources] NSK Wire Protocol=DataDirect 5.1 NSK SQL/MX Wire Protocol [NSK Wire Protocol] Driver=ODBCHOME/lib/ivnsk21.so Description=DataDirect 5.
"QQFOEJY ( 5IF 6/*9 -JOVY &OWJSPONFOUT 'PS FYBNQMF demoodbc -uid johndoe -pwd secret DataSource3 5IF EFNPPECD BQQMJDBUJPO JT DPEFE UP FYFDVUF B 4FMFDU TUBUFNFOU GSPN B UBCMF OBNFE &.1 *G ZPV IBWF BO &.1 UBCMF JO ZPVS EBUBCBTF UIF SFTVMUT BSF SFUVSOFE *G ZPV EP OPU IBWF BO &.
%4/ MFTT $POOFDUJPOT %4/ MFTT $POOFDUJPOT $POOFDUJPOT UP B EBUB TPVSDF DBO CF NBEF WJB B DPOOFDUJPO TUSJOH XJUIPVU SFGFSSJOH UP B EBUB TPVSDF OBNF %4/ MFTT DPOOFDUJPOT 5IJT JT BDDPNQMJTIFE CZ TQFDJGZJOH UIF %3*7&3 JOTUFBE PG UIF %4/ LFZXPSE JO B DPOOFDUJPO TUSJOH BT PVUMJOFE JO UIF 0%#$ TQFDJGJDBUJPO 'PS UIJT UP XPSL PO 6/*9 BOE -JOVY B GJMF DBMMFE PECDJOTU JOJ NVTU FYJTU XIFO UIF ESJWFS FODPVOUFST %3*7&3 JO B DPOOFDUJPO TUSJOH #Z EFGBVMU 4FUVQ JOTUBMMT B TBNQMF PECDJOTU JOJ GJMF JO U
"QQFOEJY ( 5IF 6/*9 -JOVY &OWJSPONFOUT current user’s HOME directory) and therefore DSN-Less connections cannot be made." 5IF GPMMPXJOH JT B TBNQMF CJU PECDJOTU JOJ GJMF PO -JOVY UIBU 4FUVQ JOTUBMMT JO UIF JOTUBMMBUJPO EJSFDUPSZ 5IF POMZ EJGGFSFODF GPS B CJU GJMF JT UIF GJMF OBNF EEOTL TP "MM PDDVSSFODFT PG 0%#$)0.& BSF SFQMBDFE XJUI ZPVS JOTUBMMBUJPO EJSFDUPSZ QBUI EVSJOH JOTUBMMBUJPO PG UIF GJMF [ODBC Drivers] DataDirect 5.1 NSK SQL/MX Wire Protocol=Installed [DataDirect 5.
'JMF %BUB 4PVSDFT 'PS FYBNQMF B GJMF EBUB TPVSDF GPS UIF /4, 42- .9 8JSF 1SPUPDPM ESJWFS XPVME CF TJNJMBS UP UIF GPMMPXJOH [ODBC] DRIVER=DataDirect 5.
"QQFOEJY ( 5IF 6/*9 -JOVY &OWJSPONFOUT 65' "QQMJDBUJPOT PO 6/*9 BOE -JOVY #FDBVTF UIF %BUB%JSFDU %SJWFS .BOBHFS BMMPXT BQQMJDBUJPOT UP VTF FJUIFS 65' PS 65' 6OJDPEF FODPEJOH BQQMJDBUJPOT XSJUUFO JO 65' GPS 8JOEPXT QMBUGPSNT DBO BMTP CF VTFE PO 6/*9 BOE -JOVY QMBUGPSNT 5IF %SJWFS .
) %JBHOPTUJD 5PPMT &SSPS .FTTBHFT BOE 5SPVCMFTIPPUJOH 5IJT BQQFOEJY EJTDVTTFT UIF EJBHOPTUJD UPPMT UIBU BSF BWBJMBCMF UP DPOGJHVSF BOE USPVCMFTIPPU ZPVS 0%#$ FOWJSPONFOU FYQMBJOT UIF FSSPS NFTTBHFT UIBU DBO CF SFUVSOFE GSPN UIF %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ BOE QSPWJEFT B USPVCMFTIPPUJOH TFDUJPO UIBU EJTDVTTFT TPNF DPNNPO UZQFT PG JTTVFT UIBU ZPV NBZ FYQFSJFODF XIFO VTJOH 0%#$ BQQMJDBUJPOT 5IJT BQQFOEJY JODMVEFT UIF GPMMPXJOH O i%JBHOPTUJD 5PPMTw PO QBHF O i&SSPS .
"QQFOEJY ) %JBHOPTUJD 5PPMT &SSPS .
%JBHOPTUJD 5PPMT GPS FYBNQMF JG UIF ESJWFS JT JOTUBMMFE JO PQU PECD MJC UIF DPNNBOE ivtestlib /opt/odbc/lib/ivnsk21.so PS ddtestlib /opt/odbc/lib/ddnsk21.so BUUFNQUT UP MPBE UIF /4, 42- .
"QQFOEJY ) %JBHOPTUJD 5PPMT &SSPS .
&SSPS .FTTBHFT ODBC_component JT UIF DPNQPOFOU JO XIJDI UIF FSSPS PDDVSSFE 'PS FYBNQMF BO FSSPS NFTTBHF GSPN UIF /4, 42- .9 8JSF 1SPUPDPM ESJWFS XPVME MPPL MJLF UIJT [DataDirect] [ODBC NSK SQL/MX driver] Invalid precision specified.
"QQFOEJY ) %JBHOPTUJD 5PPMT &SSPS .
5SPVCMFTIPPUJOH 4PNF DPNNPO FSSPST UIBU BSF SFUVSOFE CZ UIF 0%#$ ESJWFS JG ZPV BSF FYQFSJFODJOH B TFUVQ DPOOFDUJPO JTTVF BSF O O O O O Specified driver could not be loaded Data source name not found and no default driver specified Cannot open share library: libodbc.
"QQFOEJY ) %JBHOPTUJD 5PPMT &SSPS .FTTBHFT BOE 5SPVCMFTIPPUJOH 4PNF DPNNPO FYBNQMFT PG XIBU ZPV NJHIU FYQFSJFODF JG ZPV IBWF BO JOUFSPQFSBCJMJUZ JTTVF BSF O 42- TUBUFNFOUT GBJM UP FYFDVUF O %BUB JT SFUVSOFE VQEBUFE EFMFUFE JOTFSUFE JODPSSFDUMZ O " IBOH PS DPSF EVNQ 5SPVCMFTIPPUJOH UIF *TTVF 8IFO ZPV FYQFSJFODF BO JOUFSPQFSBCJMJUZ JTTVF ZPV NVTU JTPMBUF JO XIJDI DPNQPOFOU UIF JTTVF JT PDDVSSJOH *T JU BO 0%#$ BQQMJDBUJPO BO 0%#$ ESJWFS BO 0%#$ %SJWFS .
5SPVCMFTIPPUJOH 5IF UIJSE TUFQ *G ZPV GJOE UIBU OFJUIFS UIF 0%#$ BQQMJDBUJPO OPS UIF EBUB TPVSDF JT UIF TPVSDF PG ZPVS QSPCMFN ZPV UIFO DBO USPVCMFTIPPU UIF 0%#$ ESJWFS BOE UIF 0%#$ %SJWFS .
"QQFOEJY ) %JBHOPTUJD 5PPMT &SSPS .
(MPTTBSZ BQQMJDBUJPO "O BQQMJDBUJPO BT JU SFMBUFT UP UIF 0%#$ TUBOEBSE QFSGPSNT UBTLT TVDI BT SFRVFTUJOH B DPOOFDUJPO UP B EBUB TPVSDF TFOEJOH 42- SFRVFTUT UP B EBUB TPVSDF QSPDFTTJOH FSSPST BOE UFSNJOBUJOH UIF DPOOFDUJPO UP B EBUB TPVSDF *U NBZ BMTP QFSGPSN GVODUJPOT PVUTJEF UIF TDPQF PG UIF 0%#$ JOUFSGBDF DPOGPSNBODF 5IFSF BSF UXP UZQFT PG DPOGPSNBODF MFWFMT GPS 0%#$ ESJWFST 0%#$ "1* BOE 0%#$ 42- HSBNNBS TFF 42- (SBNNBS ,OPXJOH UIF DPOGPSNBODF MFWFMT IFMQT ZPV EFUFSNJOF UIF SBOH
(MPTTBSZ %SJWFS .BOBHFS 5IF NBJO QVSQPTF PG UIF %SJWFS .BOBHFS JT UP MPBE ESJWFST GPS UIF BQQMJDBUJPO 5IF %SJWFS .BOBHFS BMTP QSPDFTTFT 0%#$ JOJUJBMJ[BUJPO DBMMT BOE NBQT EBUB TPVSDFT UP B TQFDJGJD ESJWFS %4/ %BUB 4PVSDF " %4/ TUPSFT UIF EBUB TPVSDF JOGPSNBUJPO TFF %BUB 4PVSDF /BNF OFDFTTBSZ GPS UIF %SJWFS .
(MPTTBSZ DPNNPO %#.4 FYUFOTJPOT UP 42- 5IF GPMMPXJOH MJTU TVNNBSJ[FT UIF HSBNNBS JODMVEFE JO FBDI DPOGPSNBODF MFWFM .JOJNVN 42- (SBNNBS t t t t %BUB %FGJOJUJPO -BOHVBHF %%- $3&"5& 5"#-& BOE %301 5"#-& %BUB .BOJQVMBUJPO -BOHVBHF %.- TJNQMF 4&-&$5 */4&35 61%"5& 4&"3$)&% BOE %&-&5& 4&"3$)&% &YQSFTTJPOT TJNQMF TVDI BT " # $ %BUB UZQFT $)"3 7"3$)"3 PS -0/( 7"3$)"3 $PSF 42- (SBNNBS t t t t t .
(MPTTBSZ %BUB%JSFDU $POOFDU 4FSJFT GPS 0%#$ 6TFS T (VJEF BOE 3FGFSFODF
*OEFY EFNP UPPM 9.
*OEFY EBUB TPVSDF * DPOGJHVSJOH DPOOFDUJOH WJB DPOOFDUJPO TUSJOH *"/""QQ$PEF1BHF EBUB UZQFT JNQSPWJOH ESJWFS SFRVJSFNFOUT EBUBCBTF QFSGPSNBODF JTPMBUJPO MFWFMT JOEFY QFSGPSNBODF MPDLJOH MFWFMT KPJO QFSGPSNBODF 0%#$ BQQMJDBUJPO QFSGPSNBODF 0%#$ DPOGPSNBODF , QFSTJTUJOH SFTVMU TFU BT 9.
*OEFY 4 7 TDBMBS GVODUJPOT 0%#$ WFSTJPO TUSJOH JOGPSNBUJPO ESJWFS TUBUFNFOUT TVQQPSUFE TUSJOH GVODUJPOT TZTUFN GVODUJPOT TZTUFN JOGPSNBUJPO GJMF PECD JOJ 5 UISFBEJOH PWFSWJFX UJNF GVODUJPOT USBDF MPH USBDJOH USBOTMBUPS JO UIF 6/*9 FOWJSPONFOU USPVCMFTIPPUJOH UZQPHSBQIJDBM DPOWFOUJPOT 6 6/*9 BOE -JOVY DPEF QBHFT *"/""QQ$PEF1BHF BUUSJCVUF EBUB TPVSDF DPOGJHVSBUJPO ESJWFS /4, 42- .