/* Copyright © 1995, 2002, Oracle Corporation. All Rights Reserved. */ /*--------------------------------------------------------------------------*/ /* PROGRAM NAME: SQL_MIA_CHAR_SET_MOD.C */ /* MATCHING SQL MODULE: SQL_MIA_CHAR_SET_C.SQLMOD */ /*--------------------------------------------------------------------------*/ /* ABSTRACT: This C program creates a database called MIA_CHAR_SET, */ /* several domains, a single table (called COLOURS), and an index for */ /* that table. The program inserts eight rows of data. Each column */ /* is defined by a different character set for the following languages: */ /* ENGLISH, FRENCH, KANJI, ROMAJI, KATAKANA, HINDI, GREEK, ARABIC, and */ /* RUSSIAN. Finally, the program uses a cursor to fetch rows of data for */ /* display. */ /*--------------------------------------------------------------------------*/ /* PROGRAM PURPOSE: To demonstrate how to create a database containing */ /* multiple character sets and how to declare character sets. */ /*--------------------------------------------------------------------------*/ #include #include #include #define SUCCESS 0 #define END_OF_STREAM 100 int check_error(); void create_mia_char_set_db(); void create_domain_mcs(); void create_domain_kanji(); void create_domain_dec_kanji(); void create_domain_katakana(); void create_domain_hindi(); void create_domain_greek(); void create_domain_arabic(); void create_domain_russian(); void create_table_colours(); void create_rollback(); void create_commit(); void create_index(); void insert_black(); void insert_white(); void insert_blue(); void insert_red(); void insert_yellow(); void insert_green(); void open_colours_cursor(); void fetch_colours_data(); void close_colours_cursor(); /* Declare variables for program use. */ /* When you declare character string parameters, you must take into */ /* account the character set of the corresponding SQL column, whether */ /* or not the characters are single- or multiple-octet characters, and */ /* whether or not the module specifies the character length in octets */ /* or characters. */ typedef char colour_string_t[17]; long sqlcode; enum languages { ENGLISH, FRENCH, JAPANESE, ROMAJI, KATAKANA, HINDI, GREEK, ARABIC, RUSSIAN, MAX_LANGUAGE }; enum colours { MAX_COLOUR = 6 }; static char *language_name[] = /* (NOTE: in the same sequence as the enum) */ { "ENGLISH ", "FRENCH ", "JAPANESE ", "ROMAJI ", "KATAKANA ", "HINDI ", "GREEK ", "ARABIC ", "RUSSIAN ", }; int main() { static colour_string_t prism[MAX_LANGUAGE][MAX_COLOUR]; int colour_count; int language; int colour; create_mia_char_set_db(&sqlcode); if (sqlcode != SUCCESS) check_error(); create_domain_mcs(&sqlcode); if (sqlcode != SUCCESS) check_error(); create_domain_kanji(&sqlcode); if (sqlcode != SUCCESS) check_error(); create_domain_dec_kanji(&sqlcode); if (sqlcode != SUCCESS) check_error(); create_domain_katakana(&sqlcode); if (sqlcode != SUCCESS) check_error(); create_domain_hindi(&sqlcode); if (sqlcode != SUCCESS) check_error(); create_domain_greek(&sqlcode); if (sqlcode != SUCCESS) check_error(); create_domain_arabic(&sqlcode); if (sqlcode != SUCCESS) check_error(); create_domain_russian(&sqlcode); if (sqlcode != SUCCESS) check_error(); create_table_colours(&sqlcode); if (sqlcode != SUCCESS) check_error(); create_commit(&sqlcode); if (sqlcode != SUCCESS) check_error(); create_index(&sqlcode); if (sqlcode != SUCCESS) check_error(); create_commit(&sqlcode); if (sqlcode != SUCCESS) check_error(); insert_black(&sqlcode); if (sqlcode != SUCCESS) check_error(); insert_white(&sqlcode); if (sqlcode != SUCCESS) check_error(); insert_blue(&sqlcode); if (sqlcode != SUCCESS) check_error(); insert_red(&sqlcode); if (sqlcode != SUCCESS) check_error(); insert_yellow(&sqlcode); if (sqlcode != SUCCESS) check_error(); insert_green(&sqlcode); if (sqlcode != SUCCESS) check_error(); create_commit(&sqlcode); if (sqlcode != SUCCESS) check_error(); /* Open COLOURS table cursor, fetch all rows into an array, and */ /* display column data */ open_colours_cursor(&sqlcode); if (sqlcode == 0) { colour_count = 0; for (colour = 0; colour < (int)MAX_COLOUR; colour++) { fetch_colours_data( &sqlcode, prism[ENGLISH][colour], prism[FRENCH][colour], prism[JAPANESE][colour], prism[ROMAJI][colour], prism[KATAKANA][colour], prism[HINDI][colour], prism[GREEK][colour], prism[ARABIC][colour], prism[RUSSIAN][colour] ); if (sqlcode == END_OF_STREAM) break; colour_count++; } } /* Close the cursor. */ close_colours_cursor(&sqlcode); if (sqlcode != SUCCESS) check_error(); /* Report the results. */ /* Print table title. */ printf("\n"); printf("\n"); printf("%20s COLOURS TABLE DATA \n"," "); printf("%20s MIA_CHAR_SET DATABASE \n"," "); printf("%20s-----------------------\n"," "); printf("\n"); for (language = 0; language < (int)MAX_LANGUAGE; language++) { printf("%s ", language_name[language]); for (colour = 0; colour < colour_count; colour++) { printf("%-.8s ", prism[language][colour]); } printf("\n"); printf("\n"); } /* Error-handling section. */ } /* main end */ check_error() { if (sqlcode != SUCCESS) { sql_signal(); create_rollback(&sqlcode); exit(0); } }