oracle instant client 11.2 for x86
diff --git a/sdk/demo/procdemo.pc b/sdk/demo/procdemo.pc
new file mode 100755
index 0000000..a9175cf
--- /dev/null
+++ b/sdk/demo/procdemo.pc
@@ -0,0 +1,118 @@
+/*
+ * procdemo.pc
+ *
+ * This program connects to ORACLE, declares and opens a cursor,
+ * fetches the names, salaries, and commissions of all
+ * salespeople, displays the results, then closes the cursor.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <sqlca.h>
+#include <stdlib.h>
+#include <sqlda.h>
+#include <sqlcpr.h>
+
+#define UNAME_LEN 20
+#define PWD_LEN 11
+
+/*
+ * Use the precompiler typedef'ing capability to create
+ * null-terminated strings for the authentication host
+ * variables. (This isn't really necessary--plain char *'s
+ * would work as well. This is just for illustration.)
+ */
+typedef char asciiz[PWD_LEN];
+
+EXEC SQL TYPE asciiz IS CHARZ(PWD_LEN) REFERENCE;
+asciiz username;
+asciiz password;
+
+struct emp_info
+{
+ asciiz emp_name;
+ float salary;
+ float commission;
+};
+
+void sql_error(msg)
+ char *msg;
+{
+ char err_msg[512];
+ size_t buf_len, msg_len;
+
+ EXEC SQL WHENEVER SQLERROR CONTINUE;
+
+ printf("\n%s\n", msg);
+
+/* Call sqlglm() to get the complete text of the
+ * error message.
+ */
+ buf_len = sizeof (err_msg);
+ sqlglm(err_msg, &buf_len, &msg_len);
+ printf("%.*s\n", msg_len, err_msg);
+
+ EXEC SQL ROLLBACK RELEASE;
+ exit(EXIT_FAILURE);
+}
+
+void main()
+{
+ struct emp_info *emp_rec_ptr;
+
+/* Allocate memory for emp_info struct. */
+ if ((emp_rec_ptr =
+ (struct emp_info *) malloc(sizeof(struct emp_info))) == 0)
+ {
+ fprintf(stderr, "Memory allocation error.\n");
+ exit(EXIT_FAILURE);
+ }
+
+/* Connect to ORACLE. */
+ strcpy(username, "scott");
+ strcpy(password, "tiger");
+
+ EXEC SQL WHENEVER SQLERROR DO sql_error("ORACLE error--");
+
+ EXEC SQL CONNECT :username IDENTIFIED BY :password;
+ printf("\nConnected to ORACLE as user: %s\n", username);
+
+/* Declare the cursor. All static SQL explicit cursors
+ * contain SELECT commands. 'salespeople' is a SQL identifier,
+ * not a (C) host variable.
+ */
+ EXEC SQL DECLARE salespeople CURSOR FOR
+ SELECT ENAME, SAL, COMM
+ FROM EMP
+ WHERE JOB LIKE 'SALES%';
+
+/* Open the cursor. */
+ EXEC SQL OPEN salespeople;
+
+/* Get ready to print results. */
+ printf("\n\nThe company's salespeople are--\n\n");
+ printf("Salesperson Salary Commission\n");
+ printf("----------- ------ ----------\n");
+
+/* Loop, fetching all salesperson's statistics.
+ * Cause the program to break the loop when no more
+ * data can be retrieved on the cursor.
+ */
+ EXEC SQL WHENEVER NOT FOUND DO break;
+
+ for (;;)
+ {
+ EXEC SQL FETCH salespeople INTO :emp_rec_ptr;
+ printf("%s %9.2f %12.2f\n", emp_rec_ptr->emp_name,
+ emp_rec_ptr->salary, emp_rec_ptr->commission);
+ }
+
+/* Close the cursor. */
+ EXEC SQL CLOSE salespeople;
+
+ printf("\nGOOD-BYE!!\n\n");
+
+ EXEC SQL COMMIT WORK RELEASE;
+ exit(EXIT_SUCCESS);
+}
+