增加oracle 11g x86版 instantclient
diff --git a/sdk/demo/occidemo.sql b/sdk/demo/occidemo.sql
new file mode 100755
index 0000000..6d1c6a8
--- /dev/null
+++ b/sdk/demo/occidemo.sql
@@ -0,0 +1,344 @@
+/* Copyright (c) 2002, 2004, Oracle. All rights reserved.  */
+
+/*
+  NAME
+    occidemo.sql - Create OCCI demo objects
+
+  DESCRIPTION
+    SQL Script to create OCCI demo objects
+    Assumes HR schema is setup
+    Assumes system's account passwd to be manager
+    Execute this before any of the OCCI demos are run
+    To drop the objects created by this SQL use occidemod.sql
+
+  MODIFIED
+    sudsrini   03/06/03  - sudsrini_occi_10ir1_demos (include occidemod)
+    idcqe      03/13/01  - Created
+
+*/
+
+
+/* Drop objects before creating them */ 
+
+@occidemod.sql
+
+connect hr/hr
+
+CREATE TABLE elements (
+  element_name VARCHAR2(25),
+  molar_volume BINARY_FLOAT,
+  atomic_weight BINARY_DOUBLE
+);
+
+CREATE TABLE author_tab ( 
+  author_id NUMBER, 
+  author_name VARCHAR2(25) 
+); 
+
+INSERT INTO author_tab (author_id, author_name) VALUES (333, 'JOE');
+INSERT INTO author_tab (author_id, author_name) VALUES (444, 'SMITH');
+
+CREATE OR REPLACE TYPE publ_address AS OBJECT ( 
+  street_no NUMBER, 
+  city VARCHAR2(25) 
+) 
+/ 
+
+CREATE TABLE publisher_tab ( 
+  publisher_id NUMBER, 
+  publisher_add publ_address 
+); 
+
+INSERT INTO publisher_tab (publisher_id, publisher_add) VALUES 
+(11, publ_address (121, 'NEW YORK'));
+
+CREATE TABLE publ_address_tab OF publ_address; 
+
+INSERT INTO publ_address_tab VALUES (22, 'BOSTON');
+INSERT INTO publ_address_tab VALUES (33, 'BUFFALO');
+INSERT INTO publ_address_tab VALUES (44, 'CALIFORNIA');
+
+
+CREATE OR REPLACE TYPE journal AS TABLE OF VARCHAR2(50) 
+/ 
+CREATE TABLE journal_tab (jid NUMBER, jname journal) 
+NESTED TABLE jname STORE AS journal_store;
+
+INSERT INTO journal_tab (jid, jname) VALUES (22, journal ('NATION', 'TIMES'));
+INSERT INTO journal_tab (jid, jname) VALUES (33, journal ('CRICKET', 'ALIVE'));
+
+CREATE OR REPLACE TYPE people_obj AS OBJECT ( 
+  ssn NUMBER, 
+  name VARCHAR2(25) 
+) NOT FINAL; 
+/ 
+
+CREATE OR REPLACE TYPE librarian UNDER people_obj( 
+   empno NUMBER, 
+   sal   NUMBER(7,2), 
+   dob   DATE, 
+   photo BLOB 
+) 
+/ 
+
+CREATE TABLE librarian_tab OF librarian; 
+
+INSERT INTO librarian_tab VALUES 
+(101, 'DAVE', 1001, 10000, '12-Jan-1970', empty_blob());
+INSERT INTO librarian_tab VALUES 
+(102, 'BOB', 1002, 12000, '17-Jan-1970', empty_blob());
+
+CREATE TABLE article_tab ( 
+  artid NUMBER, 
+  artdesc VARCHAR2(4000), 
+  artsummary LONG,
+  artfeedbk VARCHAR2(2000)
+); 
+
+CREATE OR REPLACE PROCEDURE demo_proc (col1 IN NUMBER, col2 IN OUT VARCHAR2,
+col3 OUT CHAR) AS
+BEGIN 
+  col2 := col1 || ' ' || col2 || ' ' || 'IN-OUT';
+  col3 := 'OUT'; 
+END;
+/
+
+CREATE OR REPLACE FUNCTION demo_fun (col1 IN NUMBER,
+col2 IN OUT VARCHAR2, col3 OUT CHAR) RETURN CHAR AS 
+BEGIN 
+  col2 := col1 || ' ' || col2 || ' ' || 'IN-OUT'; 
+  col3 := 'OUT'; 
+  RETURN 'abcd';
+END;
+/
+
+CREATE TABLE book (bookid NUMBER, summary VARCHAR2(4000));
+
+CREATE TABLE cover (c1 NUMBER(5), c2 VARCHAR2(20));
+
+DECLARE 
+ch1 VARCHAR2(4000) := 'aa'; 
+ch2 VARCHAR2(4000):= '';
+nu NUMBER := 0; 
+BEGIN 
+  FOR nu IN 1..11 LOOP
+    ch2 := ch1 || ch2; ch1 := ch2; 
+  END LOOP; 
+  INSERT INTO book (bookid, summary) VALUES (11, ch1); 
+END;
+/
+
+CREATE TYPE elecdoc_typ AS OBJECT
+    ( document_typ      VARCHAR2(32)
+    , formatted_doc     BLOB
+    ) ;
+/
+CREATE TYPE elecdoc_tab AS TABLE OF elecdoc_typ;
+/
+
+CREATE TYPE elheader_typ AS OBJECT
+    ( header_name        VARCHAR2(256)
+    , creation_date      DATE
+    , header_text        VARCHAR2(1024)
+    , logo               BLOB
+    );
+/
+
+CREATE TABLE electronic_media
+    ( product_id        NUMBER(6)
+    , ad_id             NUMBER(6)
+    , ad_composite      BLOB
+    , ad_sourcetext     CLOB
+    , ad_finaltext      CLOB
+    , ad_fltextn        NCLOB
+    , ad_elecdocs_ntab  elecdoc_tab
+    , ad_photo          BLOB
+    , ad_graphic        BFILE
+    , ad_header         elheader_typ
+    , press_release     LONG
+    ) NESTED TABLE ad_elecdocs_ntab STORE AS elecdocs_nestedtab;
+CREATE UNIQUE INDEX printmedia_pk
+    ON electronic_media (product_id, ad_id);
+
+ALTER TABLE electronic_media
+ADD ( CONSTRAINT printmedia__pk
+      PRIMARY KEY (product_id, ad_id)
+    ) ;
+
+
+
+CREATE TYPE people_typ AS OBJECT
+(
+  name VARCHAR2(30),
+  ssn NUMBER,
+  dob DATE
+) not final;
+/
+
+CREATE TABLE people_tab OF people_typ;
+
+INSERT INTO people_tab VALUES (people_typ('john', 111, '01-Jan-1970'));
+INSERT INTO people_tab VALUES (people_typ('jill', 666, '06-Jan-1976'));
+
+CREATE TYPE student UNDER people_typ
+(
+  stud_id NUMBER,
+  teammate REF people_typ
+) NOT FINAL;
+/
+
+CREATE TABLE student_tab OF student;
+INSERT INTO student_tab VALUES ('jimmy',222,'02-Feb-1976',200,
+(SELECT REF(a) FROM people_tab a where name='john'));
+
+CREATE TYPE parttime_stud UNDER student
+(
+  course_id NUMBER,
+  partner REF student
+)NOT FINAL;
+/
+CREATE TABLE parttime_stud_tab OF parttime_stud;
+
+INSERT INTO parttime_stud_tab VALUES ('james',333,'03-Feb-1976',300,
+(SELECT REF(a) FROM people_tab a where name='john'),3000,
+(SELECT REF(a) FROM student_tab a));
+
+
+CREATE TYPE foreign_student UNDER parttime_stud
+(
+  country VARCHAR2(30),
+  leader REF parttime_stud
+);
+/
+CREATE TABLE foreign_student_tab OF foreign_student;
+
+COMMIT;
+
+
+/* OCCI AQ Objects */
+
+
+connect system/manager 
+
+grant aq_administrator_role, aq_user_role to hr;
+grant execute on dbms_aq to hr;
+grant execute on dbms_aqadm to hr;
+
+BEGIN
+  dbms_aqadm.grant_system_privilege('ENQUEUE_ANY','hr',FALSE);
+  dbms_aqadm.grant_system_privilege('DEQUEUE_ANY','hr',FALSE);
+END;
+/
+
+connect hr/hr
+
+CREATE OR REPLACE TYPE hr_obj AS OBJECT
+(a1 NUMBER, a2 VARCHAR2(25));
+/
+
+BEGIN
+  dbms_aqadm.create_queue_table (
+  queue_table => 'hr.table01',
+  queue_payload_type => 'RAW',
+  comment => 'single-consumer',
+  multiple_consumers => false,
+  compatible => '8.1.0'
+);
+END;
+/
+
+BEGIN
+  dbms_aqadm.create_queue (
+  queue_name => 'queue01', 
+  queue_table=> 'hr.table01' 
+);
+END;
+/
+BEGIN
+  dbms_aqadm.start_queue(queue_name => 'queue01');
+END;
+/
+
+BEGIN
+  dbms_aqadm.create_queue_table (
+  queue_table => 'hr.table02',
+  queue_payload_type => 'SYS.ANYDATA',
+  comment => 'multi-consumer',
+  multiple_consumers => true,
+  compatible => '8.1.0'
+);
+END;
+/
+
+BEGIN
+  dbms_aqadm.create_queue (
+  queue_name => 'queue02',
+  queue_table=> 'hr.table02'
+);
+END;
+/
+BEGIN
+  dbms_aqadm.start_queue(queue_name => 'queue02');
+END;
+/
+
+BEGIN
+  dbms_aqadm.create_queue_table (
+  queue_table => 'hr.table03',
+  queue_payload_type => 'hr_obj',
+  comment => 'multi-consumer',
+  multiple_consumers => true,
+  compatible => '8.1.0'
+);
+END;
+/
+
+BEGIN
+  dbms_aqadm.create_queue (
+  queue_name => 'queue03',
+  queue_table=> 'hr.table03'
+);
+END;
+/
+BEGIN
+  dbms_aqadm.start_queue(queue_name => 'queue03');
+END;
+/
+
+BEGIN
+  dbms_aqadm.create_queue_table (
+  queue_table => 'hr.table04',
+  queue_payload_type => 'RAW',
+  comment => 'multiple-consumer',
+  multiple_consumers => true,
+  compatible => '8.1.0'
+);
+END;
+/
+
+BEGIN
+  dbms_aqadm.create_queue (
+  queue_name => 'queue04',
+  queue_table=> 'hr.table04'
+);
+END;
+/
+BEGIN
+  dbms_aqadm.start_queue(queue_name => 'queue04');
+END;
+/
+
+Rem Add default local subscribers to the queues
+
+BEGIN
+  dbms_aqadm.add_subscriber( queue_name=> 'queue03',
+           subscriber=> sys.aq$_agent('AGT1','hr.queue03', 0));
+END;
+/
+
+BEGIN
+  dbms_aqadm.add_subscriber( queue_name=> 'queue04',
+           subscriber=> sys.aq$_agent('AGT1','hr.queue04', 0));
+END;
+/
+