summaryrefslogtreecommitdiff
path: root/src/interfaces/cli/example1.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/cli/example1.c')
-rw-r--r--src/interfaces/cli/example1.c173
1 files changed, 0 insertions, 173 deletions
diff --git a/src/interfaces/cli/example1.c b/src/interfaces/cli/example1.c
deleted file mode 100644
index 75cedda3dd..0000000000
--- a/src/interfaces/cli/example1.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/* -*- C -*- */
-/* The first example illustrates creating a table, adding some data
- * to it, and selecting the inserted data. The second example shows
- * interactive ad hoc query processing.
- *
- * Actual applications include more complete error checking following
- * calls to SQL/CLI routines. That material is omitted from this
- * Appendix for the sake of clarity.
- *
- * This file is adapted for PostgreSQL
- * from the CLI Annex in the SQL98 August 1994 draft standard.
- * Thomas G. Lockhart 1999-06-16
- */
-
-/*
- * B.1 Create table, insert, select
- *
- * This example function creates a table, inserts data into the table,
- * and selects the inserted data.
- *
- * This example illustrates the execution of SQL statement text
- * both using the Prepare() and Execute() method and using the
- * ExecDirect() method. The example also illustrates both the case
- * where the application uses the automatically-generated descriptors
- * and the case where the application allocates a descriptor of its
- * own and associates this descriptor with the SQL statement.
- *
- * Code comments include the equivalent statements in embedded SQL
- * to show how embedded SQL operations correspond to SQL/CLI function
- * calls.
- */
-
-#include "sqlcli.h"
-#include <string.h>
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-int print_err(SQLSMALLINT handletype, SQLINTEGER handle);
-
-int
-example1(SQLCHAR * server, SQLCHAR * uid, SQLCHAR * authen)
-{
- SQLHENV henv;
- SQLHDBC hdbc;
- SQLHDESC hdesc;
- SQLHDESC hdesc1;
- SQLHDESC hdesc2;
- SQLHSTMT hstmt;
- SQLINTEGER id;
- SQLSMALLINT idind;
- SQLCHAR name[51];
- SQLINTEGER namelen;
- SQLSMALLINT nameind;
-
- /* EXEC SQL CONNECT TO :server USER :uid; */
-
- /* allocate an environment handle */
- SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
- /* allocate a connection handle */
- SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
-
- /* connect to database */
- if (SQLConnect(hdbc, server, SQL_NTS, uid, SQL_NTS,
- authen, SQL_NTS)
- != SQL_SUCCESS)
- return (print_err(SQL_HANDLE_DBC, hdbc));
-
- /* allocate a statement handle */
- SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
-
- /* EXEC SQL CREATE TABLE NAMEID (ID integer, NAME varchar(50)); */
- {
- SQLCHAR create[] = "CREATE TABLE NAMEID (ID integer,"
- " NAME varchar(50))";
-
- /* execute the CREATE TABLE statement */
- if (SQLExecDirect(hstmt, create, SQL_NTS) != SQL_SUCCESS)
- return (print_err(SQL_HANDLE_STMT, hstmt));
- }
-
- /* EXEC SQL COMMIT WORK; */
- /* commit CREATE TABLE */
- SQLEndTran(SQL_HANDLE_ENV, henv, SQL_COMMIT);
- /* EXEC SQL INSERT INTO NAMEID VALUES ( :id, :name ); */
- {
- SQLCHAR insert[] = "INSERT INTO NAMEID VALUES (?, ?)";
-
- /* show the use of SQLPrepare/SQLExecute method */
- /* prepare the INSERT */
- if (SQLPrepare(hstmt, insert, SQL_NTS) != SQL_SUCCESS)
- return (print_err(SQL_HANDLE_STMT, hstmt));
- /* application parameter descriptor */
- SQLGetStmtAttr(hstmt, SQL_ATTR_APP_PARAM_
- DESC, &hdesc1, 0L,
- (SQLINTEGER *) NULL);
- SQLSetDescRec(hdesc1, 1, SQL_INTEGER, 0, 0L, 0, 0,
- (SQLPOINTER) & id, (SQLINTEGER *) NULL, (SQLSMALLINT *) NULL);
- SQLSetDescRec(hdesc1, 2, SQL_CHAR, 0, 0L, 0, 0,
- (SQLPOINTER) name, (SQLINTEGER *) NULL,
- (SQLSMALLINT *) NULL);
- /* implementation parameter descriptor */
- SQLGetStmtAttr(hstmt, SQL_ATTR_IMP_PARAM_
- DESC, &hdesc2, 0L,
- (SQLINTEGER *) NULL);
- SQLSetDescRec(hdesc2, 1, SQL_INTEGER, 0, 0L, 0, 0,
- (SQLPOINTER) NULL, (SQLINTEGER *) NULL,
- (SQLSMALLINT *) NULL);
- SQLSetDescRec(hdesc2, 2, SQL_VARCHAR, 0, 50L, 0, 0,
- (SQLPOINTER) NULL, (SQLINTEGER *) NULL,
- (SQLSMALLINT *) NULL);
-
- /* assign parameter values and execute the INSERT */
- id = 500;
- (void) strcpy(name, "Babbage");
- if (SQLExecute(hstmt) != SQL_SUCCESS)
- return (print_err(SQL_HANDLE_STMT, hstmt));
- }
- /* EXEC SQL COMMIT WORK; */
- SQLEndTran(SQL_HANDLE_ENV, henv, SQL_COMMIT);
- /* commit inserts */
-
- /* EXEC SQL DECLARE c1 CURSOR FOR SELECT ID, NAME FROM NAMEID; */
- /* EXEC SQL OPEN c1; */
- /* The application doesn't specify "declare c1 cursor for" */
- {
- SQLCHAR select[] = "select ID, NAME from NAMEID";
-
- if (SQLExecDirect(hstmt, select, SQL_NTS) != SQL_SUCCESS)
- return (print_err(SQL_HANDLE_STMT, hstmt));
- }
-
- /* EXEC SQL FETCH c1 INTO :id, :name; */
- /* this time, explicitly allocate an application row descriptor */
- SQLAllocHandle(SQL_HANDLE_DESC, hdbc, &hdesc);
- SQLSetDescRec(hdesc, 1, SQL_INTEGER, 0, 0L, 0, 0,
- (SQLPOINTER) & id, (SQLINTEGER *) NULL, (SQLSMALLINT *) & idind);
-
- SQLSetDescRec(hdesc, 2, SQL_
- CHAR, 0, (SQLINTEGER) sizeof(name),
- 0, 0, (SQLPOINTER) & name, (SQLINTEGER *) & namelen,
- (SQLSMALLINT *) & nameind);
- /* associate descriptor with statement handle */
- SQLSetStmtAttr(hstmt, SQL_ATTR_APP_ROW_DESC, &hdesc, 0);
- /* execute the fetch */
- SQLFetch(hstmt);
-
- /* EXEC SQL COMMIT WORK; */
- /* commit the transaction */
- SQLEndTran(SQL_HANDLE_ENV, henv, SQL_COMMIT);
-
- /* EXEC SQL CLOSE c1; */
- SQLClose(hstmt);
- /* free the statement handle */
- SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
-
- /* EXEC SQL DISCONNECT; */
- /* disconnect from the database */
- SQLDisconnect(hdbc);
- /* free descriptor handle */
- SQLFreeHandle(SQL_HANDLE_DESC, hdesc);
- /* free descriptor handle */
- SQLFreeHandle(SQL_HANDLE_DESC, hdesc1);
- /* free descriptor handle */
- SQLFreeHandle(SQL_HANDLE_DESC, hdesc2);
- /* free connection handle */
- SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
- /* free environment handle */
- SQLFreeHandle(SQL_HANDLE_ENV, henv);
-
- return (0);
-}