rem 
rem $Header: oci11.sql,v 1.1 1995/03/05 23:28:29 vraghuna Exp $ 
rem 
Rem  Copyright (c) 1995 by Oracle Corporation 
Rem    NAME
Rem      oci11.sql
Rem    DESCRIPTION
Rem	 Script for A22400 OCI Techniques White Paper
Rem      Demo script for oci11.c
Rem    MODIFIED   (MM/DD/YY)
Rem     vraghuna   03/01/95 -  Creation

set echo on;
connect internal;
REM
REM create a view to get the name, length and colid of all the columns in
REM a table
create or replace view ocicol
   (tobjid, townerid,  tname, cname, clength, colid) AS
   select o$.obj#, o$.owner#,  o$.name, c$.name, c$.length,  c$.col#
    from sys.col$ c$, sys.obj$ o$
    where o$.obj# = c$.obj#
/

CREATE OR REPLACE view ocicolu AS                 /* current user's columns */
       SELECT * from ocicol WHERE townerid = uid
/
grant select on ocicolu to public;
drop public synonym ocicolu;
create public synonym ocicolu for sys.ocicolu;

REM Create a new user - call it ocitest
drop user ocitest cascade;
create user ocitest identified by ocitest;
grant connect,resource to ocitest;
connect ocitest/ocitest;

create table test1 (col1 number);
create table test2 (col1 number, col2 number);
create table test3 (col1 number, col2 number, col3 number);
create table test4 (one number, two long, three date, four char(10));
create table test5(
	col1 number, col2 char, col3 number, col4 char,
	col5 number, col6 char, col7 number, col8 char,
	col9 number, col10 char);
create table test6(
	col1 number, col2 char, col3 number, col4 char,
	col5 number, col6 char, col7 number, col8 char,
	col9 number, col10 char, col11 number, col12 char,
	col13 number, col14 char, col15 number, col16 char,
	col17 number, col18 char, col19 number);

create or replace package oci11pkg as

	type rectype is record (cname ocicolu.cname%type,
				clength ocicolu.clength%type,
				colid ocicolu.colid%type);
	type ctype is ref cursor return rectype;
	 
        procedure oci11proc(
		curs      in out  ctype,
		tabname in varchar2);

end;
/

create or replace package body oci11pkg as
 
        procedure oci11proc(
		curs in out ctype,
		tabname in varchar2

        ) is
 
        begin
 
		open curs for 
        	select cname, clength, colid 
		from ocicolu
        	where tname = tabname;
		
 
        end;
 
end;
/
