Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De volgende code is een eenvoudig ingesloten SQL-programma, geschreven in C. Het programma illustreert veel, maar niet alle, van de ingesloten SQL-technieken. Het programma vraagt de gebruiker om een ordernummer, haalt het klantnummer, de verkoper en de status van de order op en geeft de opgehaalde informatie op het scherm weer.
int main() {
EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
int OrderID; /* Employee ID (from user) */
int CustID; /* Retrieved customer ID */
char SalesPerson[10] /* Retrieved salesperson name */
char Status[6] /* Retrieved order status */
EXEC SQL END DECLARE SECTION;
/* Set up error processing */
EXEC SQL WHENEVER SQLERROR GOTO query_error;
EXEC SQL WHENEVER NOT FOUND GOTO bad_number;
/* Prompt the user for order number */
printf ("Enter order number: ");
scanf_s("%d", &OrderID);
/* Execute the SQL query */
EXEC SQL SELECT CustID, SalesPerson, Status
FROM Orders
WHERE OrderID = :OrderID
INTO :CustID, :SalesPerson, :Status;
/* Display the results */
printf ("Customer number: %d\n", CustID);
printf ("Salesperson: %s\n", SalesPerson);
printf ("Status: %s\n", Status);
exit();
query_error:
printf ("SQL error: %ld\n", sqlca->sqlcode);
exit();
bad_number:
printf ("Invalid order number.\n");
exit();
}
Let op het volgende over dit programma:
Hostvariabelen De hostvariabelen worden gedeclareerd in een sectie tussen de trefwoorden BEGIN DECLARE SECTION en END DECLARE SECTION . Elke hostvariabelenaam wordt voorafgegaan door een dubbele punt (:) wanneer deze wordt weergegeven in een ingesloten SQL-instructie. Met de dubbelpunt kan de precompiler onderscheid maken tussen hostvariabelen en databaseobjecten, zoals tabellen en kolommen, die dezelfde naam hebben.
Gegevenstypen De gegevenstypen die worden ondersteund door een DBMS en een hosttaal kunnen heel anders zijn. Dit is van invloed op hostvariabelen omdat ze een dubbele rol spelen. Aan de ene kant zijn hostvariabelen programmavariabelen, gedeclareerd en gemanipuleerd door hosttaalinstructies. Aan de andere kant worden ze gebruikt in ingesloten SQL-instructies om databasegegevens op te halen. Als er geen hosttaaltype is dat overeenkomt met een DBMS-gegevenstype, worden de gegevens automatisch door DBMS geconverteerd. Omdat elke DBMS echter zijn eigen regels en idiosyncrasies heeft die zijn gekoppeld aan het conversieproces, moeten de typen hostvariabelen zorgvuldig worden gekozen.
Foutafhandeling De DBMS rapporteert runtimefouten aan het programma van toepassingen via een SQL Communications Area of SQLCA. In het voorgaande codevoorbeeld is de eerste ingesloten SQL-instructie INCLUDE SQLCA. Dit geeft aan dat de precompiler de SQLCA-structuur in het programma moet opnemen. Dit is vereist wanneer het programma fouten verwerkt die door de DBMS worden geretourneerd. De WHENEVER...GOTO-instructie informeert de precompiler dat er code voor foutafhandeling moet worden gegenereerd die vertakt naar een specifiek label wanneer er een fout optreedt.
Singleton SELECT De instructie die wordt gebruikt om de gegevens te retourneren, is een singleton SELECT-instructie; Dat wil gezegd: er wordt slechts één rij met gegevens geretourneerd. Daarom declareert of gebruikt het codevoorbeeld geen cursors.