Documentation

ODBC Driver Guide

Previous Topic

Next Topic

Define

The define step is where specific data definitions are established by your application and/or process. This involves defining columns/fields and creating the tables/files with optional indices.

Below is the code for Define():

/*

* Define()

*

* Create the tables

*/

void Define(void)

{

printf("DEFINE\n");

Create_CustomerMaster_Table();

Create_CustomerOrders_Table();

Create_OrderItems_Table();

Create_ItemMaster_Table();

}

/*

* Create_CustomerMaster_Table()

*

* Create the CustomerMaster

*/

void Create_CustomerMaster_Table(void)

{

RETCODE rc;

/* define table CustomerMaster */

printf("\ttable CustomerMaster\n");

if ((rc = SQLExecDirect(hStmt,

"CREATE TABLE custmast ( \

cm_custnumb CHAR(4), \

cm_custzipc CHAR(9), \

cm_custstat CHAR(2), \

cm_custrtng CHAR(1), \

cm_custname VARCHAR(47), \

cm_custaddr VARCHAR(47), \

cm_custcity VARCHAR(47))",

SQL_NTS)) != SQL_SUCCESS)

Handle_Error(SQL_HANDLE_STMT, hStmt, "SQLExecDirect(CREATE TABLE)");

if ((rc = SQLExecDirect(hStmt,

"CREATE UNIQUE INDEX cm_custnumb_idx ON custmast (cm_custnumb)",

SQL_NTS)) != SQL_SUCCESS)

Handle_Error(SQL_HANDLE_STMT, hStmt, "SQLExecDirect(CREATE INDEX)");

}

/*

* Create_CustomerOrders_Table()

*

* Create the table CustomerOrders

*/

void Create_CustomerOrders_Table(void)

{

RETCODE rc;

/* define table CustomerOrders */

printf("\ttable CustomerOrders\n");

if ((rc = SQLExecDirect(hStmt,

"CREATE TABLE custordr ( \

co_ordrdate DATE, \

co_promdate DATE, \

co_ordrnumb CHAR(6), \

co_custnumb CHAR(4))",

SQL_NTS)) != SQL_SUCCESS)

Handle_Error(SQL_HANDLE_STMT, hStmt, "SQLExecDirect(CREATE TABLE)");

if ((rc = SQLExecDirect(hStmt,

"CREATE UNIQUE INDEX co_ordrnumb_idx ON custordr (co_ordrnumb)",

SQL_NTS)) != SQL_SUCCESS)

Handle_Error(SQL_HANDLE_STMT, hStmt, "SQLExecDirect(CREATE INDEX)");

if ((rc = SQLExecDirect(hStmt,

"CREATE INDEX co_custnumb_idx ON custordr (co_custnumb)",

SQL_NTS)) != SQL_SUCCESS)

Handle_Error(SQL_HANDLE_STMT, hStmt, "SQLExecDirect(CREATE INDEX)");

}

/*

* Create_OrderItems_Table()

*

* Create the table OrderItems

*/

void Create_OrderItems_Table(void)

{

RETCODE rc;

/* define table OrderItems */

printf("\ttable OrderItems\n");

if ((rc = SQLExecDirect(hStmt,

"CREATE TABLE ordritem ( \

oi_sequnumb SMALLINT, \

oi_quantity SMALLINT, \

oi_ordrnumb CHAR(6), \

oi_itemnumb CHAR(5))",

SQL_NTS)) != SQL_SUCCESS)

Handle_Error(SQL_HANDLE_STMT, hStmt, "SQLExecDirect(CREATE TABLE)");

if ((rc = SQLExecDirect(hStmt,

"CREATE UNIQUE INDEX oi_ordrnumb_idx ON ordritem (oi_ordrnumb, oi_sequnumb)",

SQL_NTS)) != SQL_SUCCESS)

Handle_Error(SQL_HANDLE_STMT, hStmt, "SQLExecDirect(CREATE INDEX)");

if ((rc = SQLExecDirect(hStmt,

"CREATE INDEX oi_itemnumb_idx ON ordritem (oi_itemnumb)",

SQL_NTS)) != SQL_SUCCESS)

Handle_Error(SQL_HANDLE_STMT, hStmt, "SQLExecDirect(CREATE INDEX)");

}

/*

* Create_ItemMaster_Table()

*

* Create the table ItemMaster

*/

void Create_ItemMaster_Table(void)

{

RETCODE rc;

/* define table ItemMaster */

printf("\ttable ItemMaster\n");

if ((rc = SQLExecDirect(hStmt,

"CREATE TABLE itemmast ( \

im_itemwght INTEGER, \

im_itempric MONEY, \

im_itemnumb CHAR(5), \

im_itemdesc VARCHAR(47))",

SQL_NTS)) != SQL_SUCCESS)

Handle_Error(SQL_HANDLE_STMT, hStmt, "SQLExecDirect(CREATE TABLE)");

if ((rc = SQLExecDirect(hStmt,

"CREATE UNIQUE INDEX im_itemnumb_idx ON itemmast (im_itemnumb)",

SQL_NTS)) != SQL_SUCCESS)

Handle_Error(SQL_HANDLE_STMT, hStmt, "SQLExecDirect(CREATE INDEX)");

}

TOCIndex