/*******************************************************************************
**
** Source File Name = dbusemx.sqc
**
** Licensed Materials - Property of IBM
**
** (C) COPYRIGHT International Business Machines Corp. 1995, 2000
** All Rights Reserved.
**
** US Government Users Restricted Rights - Use, duplication or
** disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
**
**
** PURPOSE :
** Shows how use a database in conjunction with embedded SQL.
**
** For more information about these samples see the README file.
**
** For more information on programming in CLI see the:
** - "Building CLI Applications" section of the Application Building Guide, and the
** - CLI Guide and Reference.
**
** For more information on the SQL language see the SQL Reference.
**
*******************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlcli1.h>
#include <sql.h>
#include <sqlenv.h>
#include "utilcli.h" /* Header file for CLI sample code */
int CLIMixEmbedded( SQLHANDLE) ;
EXEC SQL INCLUDE SQLCA ;
/*******************************************************************
** main
*******************************************************************/
int main( int argc, char * argv[] )
{ SQLRETURN sqlrc = SQL_SUCCESS;
int rc = 0;
SQLHANDLE henv; /* environment handle */
SQLHANDLE hdbc; /* connection handle */
char dbAlias[SQL_MAX_DSN_LENGTH + 1] ;
char user[MAX_UID_LENGTH + 1] ;
char pswd[MAX_PWD_LENGTH + 1] ;
/* checks the command line arguments */
rc = CmdLineArgsCheck1( argc, argv, dbAlias, user, pswd );
if ( rc != 0 ) return( rc ) ;
printf("\n\nDATABASES: HOW TO USE A DATABASE IN CONJUNCTION WITH\n");
printf(" EMBEDDED SQL STATEMENTS\n");
/* initialize the CLI application */
rc = CLIAppInit( dbAlias, user, pswd, &henv, &hdbc,
(SQLPOINTER)SQL_AUTOCOMMIT_OFF);
if ( rc != 0 ) return( rc ) ;
/* mix CLI calls with embedded SQL */
rc = CLIMixEmbedded( hdbc) ;
/* terminate the CLI application */
rc = CLIAppTerm( &henv, &hdbc, dbAlias);
return( rc ) ;
} /* end main */
/******************************************************************************
** CLIMixEmbedded - how to mix CLI calls with embedded SQL
******************************************************************************/
int CLIMixEmbedded( SQLHANDLE hdbc)
{ SQLRETURN sqlrc = SQL_SUCCESS;
int rc = 0;
printf("\nUSE THE EMBEDDED SQL STATEMENT\n");
printf(" CREATE TABLE table1 (col1 INTEGER)\n");
printf("TO SHOW HOW TO MIX CLI WITH EMBEDDED SQL:\n");
/* set AUTOCOMMIT OFF */
sqlrc = SQLSetConnectAttr( hdbc,
SQL_ATTR_AUTOCOMMIT,
(SQLPOINTER)SQL_AUTOCOMMIT_OFF, SQL_NTS) ;
DBC_HANDLE_CHECK( hdbc, sqlrc);
printf("\n Transactions enabled\n");
/* execute the embedded SQL statement */
printf(" Execute the embedded SQL statement:\n");
printf(" CREATE TABLE table1 (col1 INTEGER)\n");
EXEC SQL CREATE TABLE table1 ( col1 INTEGER) ;
if ( SQLCODE != 0)
{ printf( "\nError while executing the embedded SQL statement.\n");
}
printf(" Rolling back the transaction...\n");
sqlrc = SQLEndTran( SQL_HANDLE_DBC, hdbc, SQL_ROLLBACK );
DBC_HANDLE_CHECK( hdbc, sqlrc);
printf(" Transaction rolled back.\n");
return(rc);
}