Applikasjonsutvikling: CLI (Call Level Interface)
|
|
|Oppdatering av feilsøkingstabell for SQLDescribeParam-funksjonen (CLI)
|SQLDescribeParam()-funksjonen returnerer beskrivelsen av et
|parametermerke som er knyttet til en klargjort SQL-setning.
|Feilsøkingstabellen er oppdatert med SQLSTATE HYC00.
|
|Diagnostics
|
|
|
|Tabell 24. SQLDescribeParam SQLSTATEs
|
|
|SQLSTATE |
|Description |
|Explanation |
|
|
|
|
|HYC00 |
|Driver not capable |
|The schema function stored procedures are not accessible on the server.
|Install the schema function stored procedures on the server and ensure they
|are accessible. |
|
|
|
|
|
|Asynkron utføring av CLI (Call Level Interface)
|DB2 Call Level Interface (DB2 CLI) kan kjøre et delsett med funksjoner asynkront. DB2 CLI-styreprogrammet returnerer
|kontrollen til applikasjonen etter kallet til funksjonen, men før den funksjonen er
|fullført. Funksjonen returnerer SQL_STILL_EXECUTING hver gang den blir kalt opp, helt
|til den er fullført, og da returnerer den en annen verdi (for eksempel SQL_SUCCESS).
|Asynkron utføring har bare effekt på operativsystemer med enkelttrådsbehandling (single-threaded). Applikasjoner som
|kjøres på operativsystemer med flertrådsbehandling, skal utføre funksjoner på forskjellige
|tråder. Asynkron utføring er mulig for de funksjonene som vanligvis sender
|en forespørsel til tjeneren og deretter venter på et svar. I stedet for å vente vil da en funksjon som kjører asynkront,
|returnere kontrollen til applikasjonen. Applikasjon kan da utføre andre oppgaver eller
|returnere kontrollen til operativsystemet, og bruker et avbrudd (interrupt) til å
|sjekke funksjonen gjentatte ganger til den returnerer en annen kode enn SQL_STILL_EXECUTING.
|Støtte for asynkron utføring av CLI finnes i DB2 Universal
|Database (UDB) fra og med versjon 8.2 opprettingspakke 1 (tilsvarer versjon
|8.1 opprettingspakke 8). Hvis du vil ha mer dokumentasjon om denne funksjonen, kan du slå opp i DB2 UDB versjon
|7 Informasjonssenter på http://publib.boulder.ibm.com/infocenter/db2v7luw/index.jsp. All informasjon i dokumentasjonen for versjon 7 gjelder også for versjon
|8.2 opprettingspakke 1 (tilsvarer versjon 8.1 opprettingspakke 8) og senere. DB2 versjon
|8 Informasjonssenter inneholder ikke dokumentasjon om denne funksjonen.
|
|
|Tilkoblingsattributtet SQL_ATTR_PING_DB
|
|SQL_ATTR_PING_DB (DB2 CLI v8.2)
|SQL_ATTR_PING_DB er et 32-bits heltall som brukes sammen med SQLGetConnectAttr()-funksjonen
|til å finne svartiden i nettverket for den eksisterende tilkoblingen mellom
|DB2 UDB-klienten og DB2 UDB-tjeneren. Svartiden blir rapportert i mikrosekunder.
|Hvis det er opprettet en tilkobling tidligere og den er slettet av
|databasen, blir verdien 0 rapportert. Hvis tilkoblingen er lukket av applikasjonen,
|rapporteres SQLSTATE 08003. Dette tilkoblingsattributtet kan returneres av SQLGetConnectAttr(), men det kan ikke
|defineres av SQLSetConnectAttr(). Eventuelle forsøk på å definere dette attributtet, vil
|resultere i SQLSTATE HYC00 (Driver not capable).
|
|
|SQLBindParameter-funksjon (CLI)
|I dokumentasjonen for SQLBindParameter-funksjonen er beskrivelsen i
|avsnittet om Input-parameteren feil. Dette er riktig beskrivelse:
|
|- Input-parameter
|- A 0 ColumnSize means that DB2 CLI will
|use the maximum length for the SQL type provided as the size of the column
|or stored procedure parameter. DB2 CLI will perform any necessary conversions
|using this size.
|
|
|
|
|SQLMoreResults-funksjon (CLI)
|I dokumentasjonen for SQLMoreResults-funksjonen er det ved en feil referert til
|SQL_ATTR_ROW_ARRAY_SIZE-setningsattributtet. Riktig setningsattributt
|er SQL_ATTR_PARAMSET_SIZE. Usage-avsnittet skal se slik ut:
|This function is used to return multiple results set in a sequential manner
|upon the execution of:
|
|- A parameterized query with an array of input parameter values specified
|with the SQL_ATTR_PARAMSET_SIZE statement attribute and SQLBindParameter()
Ekstra miljøattributter
I tillegg til at disse attributtene er CLI-tilkoblingsattributter, støttes
de også som CLI-miljøattributter:
- SQL_ATTR_INFO_ACCTSTR
- SQL_ATTR_INFO_APPLNAME
- SQL_ATTR_INFO_USERID
- SQL_ATTR_INFO_WRKSTNNAME
Hvis du vil vite mer om disse attributtene, kan du lese dokumentasjonen om CLI-tilkoblingsattributtene
i DB2 Informasjonssenter eller i boken CLI Guide and Reference Volume 2 .
Krav for dynamiske pekere som kan blas (dynamic scrollable cursors)
Hvis du skal utføre oppdateringer og slettinger på rader i resultatsettet til en
peker som kan blas, må UPDATE- eller DELETE-setningen omfatte alle kolonnene for
minst en entydig nøkkel i basistabellen. Dette kan være primærnøkkelen eller
en annen entydig nøkkel.
|
|
|CLI/ODBC-konfigurasjonsnøkkelordet RetCatalogAsCurrServer
|
|- Beskrivelse av nøkkelordet:
|- Katalogfunksjoner returnerer CURRENT SERVER-verdien i stedet for null-verdien
|for katalogkolonnene.
|
|- Syntaks for db2cli.ini-nøkkelordet:
|- RetCatalogAsCurrServer= 0 | 1
|
|- Standardverdier:
|- Hvis måldatabasesystemet returnerer null for katalogkolonnene, vil ikke CURRENT
|SERVER-verdien bli erstattet.
|
|- Merknader om bruk:
|- Hvis katalogfunksjonene for måldatabasesystemet returnerer en null-verdi for
|katalogkolonnene og RetCatalogAsCurrServer blir satt til 1, returnerer databasesystemet
|CURRENT SERVER-verdien i stedet.
|
|- 0 = Katalogfunksjoner returnerer null-verdien for katalogkolonnene (standard).
|- 1 = Katalogfunksjoner returnerer CURRENT SERVER-verdien, i stedet for
|null-verdien, for katalogkolonnene.
|La oss for eksempel anta at katalogfunksjonen SQLTables() returnerer
|et resultatsett der verdiene i TABLE_CAT-kolonnen er null-verdier. Hvis du setter
|RetCatalogAsCurrServer til 1, returnerer databasesystemet CURRENT SERVER-verdien i
|TABLE_CAT-kolonnen.
|
|
|Merk:
|Dette nøkkelordet støttes av DB2
|UDB for Linux, UNIX og Windows versjon 8.2 opprettingspakke 3 (tilsvarer
|versjon 8.1 opprettingspakke 10) og senere.
|
|
CLI/ODBC-konfigurasjonsnøkkelordet ReceiveTimeout
- Beskrivelse av nøkkelordet:
- Oppgi tiden i sekunder det skal ventes på et svar fra tjeneren på en etablert
tilkobling før forsøket avbrytes og det blir generert en tidsavbruddsfeil for kommunikasjonen.
- Syntaks for db2cli.ini-nøkkelordet:
- ReceiveTimeout = 0 | 1 | 2 |
... | 32767
- Standardverdier:
- Klienten venter uendelig på et svar fra tjeneren på en etablert tilkobling.
- Tilsvarende setningsattributt:
- SQL_ATTR_RECEIVE_TIMEOUT
- Merknader om bruk:
- Standardverdien 0 betyr at klienten venter uendelig på
et svar. Denne verdien har ingen virkning under opprettelse av tilkobling, og
den støttes bare for TCP/IP og blir derfor oversett for alle andre protokoller.
Setningsattributtet SQL_ATTR_RECEIVE_TIMEOUT
- SQL_ATTR_RECEIVE_TIMEOUT (DB2 CLI v8)
- En 32-bits heltallsverdi som er det antall sekunder en klient skal
vente på et svar fra en tjener på en etablert tilkobling før forsøket
avbrytes og det blir generert en tidsavbruddsfeil for kommunikasjonen.
Standardverdien 0 betyr at klienten venter uendelig på et svar. Denne
verdien har ingen virkning under opprettelse av tilkobling, og den støttes
bare for TCP/IP og blir derfor oversett for alle andre protokoller. Støttede verdier er
heltall fra 0 til 32767.
CLI/ODBC-konfigurasjonsnøkkelordet Reopt
- Beskrivelse av nøkkelordet:
- Aktiver spørreoptimalisering eller reoptimalisering for SQL-setninger som
har spesialregistre eller parametermerker.
- Syntaks for db2cli.ini-nøkkelordet:
- Reopt = 2 | 3 | 4
- Standardverdier:
- Det utføres ingen spørreoptimalisering når spørringen utføres. Standardanslagene
som er valgt av kompilatoren, brukes for spesialregistre eller parametermerker.
- Tilsvarende setningsattributt:
- SQL_ATTR_REOPT
- Merknader om bruk:
- Optimaliseringen utføres ved å bruke verdier som er tilgjengelige
når spørringen kjøres, for spesialregistrene eller parametermerkene i
stedet for standardanslagene som er valgt av kompilatoren. Dette er de gyldige verdiene for nøkkelordet:
- 2 = SQL_REOPT_NONE. Dette er standardverdien. Det utføres ingen spørreoptimalisering når spørringen utføres. Standardanslagene
som er valgt av kompilatoren, brukes for spesialregistrene eller parametermerkene. Standardpakkesettet
"NULLID" brukes til å utføre dynamiske SQL-setninger.
- 3 = SQL_REOPT_ONCE. Spørreoptimaliseringen utføres en gang når spørringen kjøres,
nærmere bestemt når spørringen utføres for første gang. Pakkesettet "NULLIDR1",
som bindes med bindingsalternativet REOPT ONCE, blir brukt.
- 4 = SQL_REOPT_ALWAYS. Spørreoptimalisering eller reoptimalisering utføres
hver gang spørringen blir utført. Pakkesettet "NULLIDRA",
som bindes med bindingsalternativet REOPT ALWAYS, blir brukt.
"NULLIDR1" og "NULLIDRA" er reserverte pakkesettnavn, og
når de brukes, er henholdsvis REOPT ONCE og REOPT ALWAYS underforstått.
Disse pakkesettene må opprettes eksplisitt med disse kommandoene:
db2 bind db2clipk.bnd collection NULLIDR1
db2 bind db2clipk.bnd collection NULLIDRA
Hvis både nøkkelordet Reopt og nøkkelordet CurrentPackageSet
blir oppgitt, har CurrentPackageSet forrang.
Setningsattributtet SQL_ATTR_REOPT
- SQL_ATTR_REOPT (DB2 CLI v8)
- En 32-bits heltallsverdi som aktiverer spørreoptimalisering for SQL-setninger
som inneholder spesialregistre eller parametermerker. Optimaliseringen
utføres ved å bruke verdier som er tilgjengelige når spørringen kjøres,
for spesialregistre eller parametermerker i stedet for standardanslagene
som er valgt av kompilatoren. Dette er de gyldige verdiene for attributtet:
- 2 = SQL_REOPT_NONE. Dette er standardverdien. Det utføres ingen spørreoptimalisering når spørringen utføres. Standardanslagene
som er valgt av kompilatoren, brukes for spesialregistrene eller parametermerkene. Standardpakkesettet
"NULLID" brukes til å utføre dynamiske SQL-setninger.
- 3 = SQL_REOPT_ONCE. Spørreoptimaliseringen utføres en gang når spørringen kjøres,
nærmere bestemt når spørringen utføres for første gang. Pakkesettet "NULLIDR1",
som bindes med bindingsalternativet REOPT ONCE, blir brukt.
- 4 = SQL_REOPT_ALWAYS. Spørreoptimalisering eller reoptimalisering utføres
hver gang spørringen blir utført. Pakkesettet "NULLIDRA",
som bindes med bindingsalternativet REOPT ALWAYS, blir brukt.
"NULLIDR1" og "NULLIDRA" er reserverte pakkesettnavn, og
når de brukes, er henholdsvis REOPT ONCE og REOPT ALWAYS underforstått.
Disse pakkesettene må opprettes eksplisitt med disse kommandoene:
db2 bind db2clipk.bnd collection NULLIDR1
db2 bind db2clipk.bnd collection NULLIDRA
SQL_ATTR_REOPT og SQL_ATTR_CURRENT_PACKAGE_SET
utelukker hverandre, så hvis det ene blir oppgitt, er ikke det andre tillatt.
CLI/ODBC-konfigurasjonsnøkkelordet CurrentPackageSet
- Beskrivelse av nøkkelordet:
- Utfører SET CURRENT PACKAGESET-setningen etter hver tilkobling.
- Syntaks for db2cli.ini-nøkkelordet:
- CurrentPackageSet = skjemanavn
- Standardverdier:
- Leddet blir ikke tilføyd.
- Tilsvarende tilkoblingsattributt:
- SQL_ATTR_CURRENT_PACKAGE_SET
- Merknader om bruk:
-
Dette alternativet utfører SQL-setningen SET CURRENT PACKAGESET med
CurrentPackageSet-verdien etter hver tilkobling til en database. Som
standard blir ikke leddet tilføyd.
SQL-setningen SET CURRENT PACKAGESET definerer
skjemanavnet (samlings-IDen) som brukes til å velge pakken som skal brukes
for senere SQL-setninger.
CLI/ODBC-applikasjoner utfører dynamiske
SQL-setninger. Ved hjelp av dette alternativet kan du styre hvilke
rettigheter som brukes til å kjøre disse setningene:
- Velg et skjema som skal brukes når SQL-setninger kjøres fra CLI/ODBC-applikasjoner.
- Kontroller at objektene i skjemaet har de nødvendige rettighetene, og kjør bindingen
på nytt.
- Definer CurrentPackageSet-alternativet til dette skjemaet.
SQL-setningene fra CLI/ODBC-applikasjonene vil nå bli kjørt under
det oppgitte skjemaet og bruke rettighetene som er definert der.
Disse
pakkesettnavnene er reservert: "NULLID ", "NULLIDR1", "NULLIDRA".
Hvis både nøkkelordet Reopt og nøkkelordet CurrentPackageSet
blir oppgitt, har CurrentPackageSet forrang.
Tilkoblingsattributtet SQL_ATTR_CURRENT_PACKAGE_SET
- SQL_ATTR_CURRENT_PACKAGE_SET (DB2 CLI v5)
- En null-avsluttet tegnstreng som viser skjemanavnet (samlings-IDen) som brukes
til å velge pakken for senere SQL-setninger.
Når du bruker dette
attributtet, blir SQL-setningen SET CURRENT PACKAGESET utført. Hvis dette
attributtet blir definert før en tilkobling, utføres SQL-setningen SET
CURRENT PACKAGESET på tilkoblingstidspunktet.
CLI/ODBC-applikasjoner utfører dynamiske
SQL-setninger. Ved hjelp av dette tilkoblingsattributtet kan du styre hvilke
rettigheter som brukes til å kjøre disse setningene:
- Velg et skjema som skal brukes når SQL-setninger kjøres fra CLI/ODBC-applikasjoner.
- Kontroller at objektene i skjemaet har de nødvendige rettighetene, og kjør bindingen
på nytt. Dette betyr vanligvis at CLI-pakkene (sqllib/bnd/db2cli.lst) skal bindes
med alternativet COLLECTION <collid>. Les om BIND-kommandoen hvis du vil ha
flere opplysninger.
- Definer CURRENTPACKAGESET-alternativet til dette skjemaet.
SQL-setningene fra CLI/ODBC-applikasjonene vil nå bli kjørt under
det oppgitte skjemaet og bruke rettighetene som er definert der.
En alternativ måte å definere skjemanavnet på, er å
bruke CLI/ODBC-konfigurasjonsnøkkelordet CURRENTPACKAGESET.
Disse
pakkesettnavnene er reservert: "NULLID ", "NULLIDR1", "NULLIDRA".
SQL_ATTR_REOPT og SQL_ATTR_CURRENT_PACKAGE_SET
utelukker hverandre, så hvis det ene blir oppgitt, er ikke det andre tillatt.
CLI/ODBC-konfigurasjonsnøkkelordet MapBigintCDefault
- Beskrivelse av nøkkelordet:
- Oppgi standard C-type for BIGINT-kolonner og -parametermerker.
- Syntaks for db2cli.ini-nøkkelordet:
- MapBigintCDefault = 0 | 1 | 2
- Standardverdier:
- Standard C-type-fremstilling for BIGINT-data er SQL_C_BIGINT.
- Merknader om bruk:
-
MapBigintCDefault styrer C-typen som brukes når
SQL_C_DEFAULT spesifiseres for BIGINT-kolonner og -parametermerker. Nøkkelordet skal primært
brukes med Microsoft-applikasjoner slik som Microsoft Access, som ikke kan håndtere
heltall med 8 byte. Definer MapBigintCDefault slik:
- 0 - for standard SQL_C_BIGINT C-type-fremstilling
- 1 - for SQL_C_CHAR C-type-fremstilling
- 2 - for SQL_C_WCHAR C-type-fremstilling
Dette nøkkelordet påvirker virkemåter til CLI-funksjoner der
SQL_C_DEFAULT kan oppgis som en C-type, som for eksempel SQLBindParameter(), SQLBindCol()
og SQLGetData().
CLI/ODBC-konfigurasjonsnøkkelordet DescribeOutputLevel
- Beskrivelse av nøkkelordet:
- Definer nivået på beskrivende informasjon i utdatakolonner som blir
forespurt av CLI-styreprogrammet ved PREPARE- og DESCRIBE-forespørsler.
- Syntaks for db2cli.ini-nøkkelordet:
- DescribeOutputLevel = 0 | 1 | 2 | 3
- Standardverdier:
- Forespør den beskrivende informasjonen som vises på nivå 2 i tabell 25.
- Merknader om bruk:
-
Dette nøkkelordet styrer mengden informasjon som CLI-styreprogrammet forespør
på en PREPARE- eller DESCRIBE-forespørsel. Når tjeneren mottar en forespørsel om beskrivelse,
returnerer den informasjonen i nivå 2 i tabell 25 for resultatsettkolonnene som standard. Det er imidlertid ikke sikkert at applikasjonen trenger all denne informasjonen, eller
den kan hende den trenger mer informasjon.
Du kan forbedre ytelsen ved å definere
nøkkelordet DescribeOutputLevel ut i fra klientapplikasjonens behov, fordi beskrivelsesdataene
som overføres mellom klienten og tjeneren blir begrenset til det som er
nødvendig for applikasjonen. Hvis innstillingen for DescribeOutputLevel er for lav,
kan det påvirke funksjonaliteten til applikasjonen. CLI-funksjonene som henter
den beskrivende informasjonen mislykkes ikke nødvendigvis, men dataene de
returnerer kan være ufullstendige.
Gyldige innstillinger for
DescribeOutputLevel:
- 0 - ingen beskrivende informasjon returneres til klientapplikasjonen
- 1 - beskrivende informasjon på nivå 1 (se tabell 25)
returneres til klientapplikasjonen
- 2 - (standard) beskrivende informasjon på nivå 2 (se tabell 25)
returneres til klientapplikasjonen
- 3 - beskrivende informasjon på nivå 3 (se tabell 25)
returneres til klientapplikasjonen
Tabellen nedenfor inneholder feltene som utgjør den beskrivende informasjonen
som tjeneren returnerer når den mottar en klargjørings- eller beskrivelsesforespørsel. Feltene
er gruppert i nivåer, og CLI/ODBC-konfigurasjonsnøkkelordet DescribeOutputLevel styrer
hvilke nivåer av beskrivende informasjon CLI-styreprogrammet ber om.
Merk:
Ikke alle nivåer av beskrivende informasjon er støttet på alle DB2-tjenere.
Alle nivåer av beskrivende informasjon støttes på følgende
DB2-tjenere:
DB2 Universal Database (UDB) for
Linux,
UNIX
og Windows
versjon 8 og senere,
DB2
UDB for
z/OS versjon 8 og senere og
DB2
UDB for
iSeries
versjon 5 utgave 3 og senere. Alle andre DB2-tjenere støtter bare verdiene 2 og 0 for DescribeOutputLevel.
Tabell 25. Nivåer for beskrivende informasjon
Nivå 1 |
Nivå 2 |
Nivå 3 |
SQL_DESC_COUNT
SQL_COLUMN_COUNT
SQL_DESC_TYPE
SQL_DESC_CONCISE_TYPE
SQL_COLUMN_LENGTH
SQL_DESC_OCTET_LENGTH
SQL_DESC_LENGTH
SQL_DESC_PRECISION
SQL_COLUMN_PRECISION
SQL_DESC_SCALE
SQL_COLUMN_SCALE
SQL_DESC_DISPLAY_SIZE
SQL_DESC_NULLABLE
SQL_COLUMN_NULLABLE
SQL_DESC_UNSIGNED
SQL_DESC_SEARCHABLE
SQL_DESC_LITERAL_SUFFIX
SQL_DESC_LITERAL_PREFIX
SQL_DESC_CASE_SENSITIVE
SQL_DESC_FIXED_PREC_SCALE |
alle felt på nivå 1 pluss:
SQL_DESC_NAME
SQL_DESC_LABEL
SQL_COLUMN_NAME
SQL_DESC_UNNAMED
SQL_DESC_TYPE_NAME
SQL_DESC_DISTINCT_TYPE
SQL_DESC_REFERENCE_TYPE
SQL_DESC_STRUCTURED_TYPE
SQL_DESC_USER_TYPE
SQL_DESC_LOCAL_TYPE_NAME
SQL_DESC_USER_DEFINED_
TYPE_CODE |
alle felt på nivå 1
og 2 pluss:
SQL_DESC_BASE_COLUMN_NAME
SQL_DESC_UPDATABLE
SQL_DESC_AUTO_UNIQUE_VALUE
SQL_DESC_SCHEMA_NAME
SQL_DESC_CATALOG_NAME
SQL_DESC_TABLE_NAME
SQL_DESC_BASE_TABLE_NAME |
[ Øverst på siden |Forrige side | Neste side | Innhold ]