CREATE TABLE person_info_table (person_id NUMBER(6) CONSTRAINT pk_person_info PRIMARY KEY, last_name VARCHAR2(15), first_name VARCHAR2(15), title VARCHAR2(8) CONSTRAINT lower_title CHECK (title = LOWER(title)), user_name VARCHAR2(8), address VARCHAR2(12), url VARCHAR2(20)); CREATE TABLE phone_list_table (person_id NUMBER(6) CONSTRAINT fk_phone_list REFERENCES person_info_table(person_id), phone_no NUMBER(10), phone_type VARCHAR2(10));
INSERT INTO person_info_table VALUES('99', 'LIN', 'FRANK', 'GRA', 'thlin', '3-211', NULL); COMMIT;This will allow you to add a personal record into person_info_table. Another way to insert a small amount of data into a table is to use OraPerl to accomplish.
For a large amount of data, The previous method can not be effeciently used. ORACLE DBMS provides a fast way to load a huge data set by using SQL*LOADER. The following steps explains how to use SQL*LOADER to load the data into table.
1|3154238422|home 2|3154432483|office 3|3154432083|office 4|3154433544|office 5|3154433857|office 6|3154433686|officethen the control file phone.ctl can be created as follow:
LOAD DATA INFILE 'phone.db' BADFILE 'phone.bad' DISCARDFILE 'phone.dsc' REPLACE INTO TABLE phone_list_table FIELDS TERMINATED BY '|' (person_id, phone_no, phone_type)
SQL>DROP TABLE person_info_table;
SPOOL objects.rpt; SELECT SUBSTR(OBJECT_NAME,1,30), OBJECT_TYPE, CREATED, last_ddl_time FROM user_objects ORDER by object_type, timestamp; spool off;Or you can check the information in SQL*Plus by
SELECT SUBSTR(OBJECT_NAME,1,30), OBJECT_TYPE, CREATED, last_ddl_time FROM user_objects ORDER by object_type, timestamp;
/* File: phone_wow_pkg.sql */ CREATE OR REPLACE PACKAGE phone_pkg AS TYPE person_rec_type IS RECORD -- person-info record (person_id NUMBER(6), last_name VARCHAR2(15), first_name VARCHAR2(15), title VARCHAR2(8), user_name VARCHAR2(8), address VARCHAR2(12), url VARCHAR2(20)); PROCEDURE get_person_by_name(name IN VARCHAR2); PROCEDURE display_person_head(ctitle IN VARCHAR2); PROCEDURE display_person_rec(person_rec IN person_rec_type); PROCEDURE display_person_end; END phone_pkg; / CREATE OR REPLACE PACKAGE BODY phone_pkg AS PROCEDURE get_person_by_name(name IN VARCHAR2) IS CURSOR person_cur(name IN VARCHAR2) IS SELECT * FROM person_info_table WHERE name IS NULL OR last_name LIKE ('%' || LOWER(name) || '%') OR first_name LIKE ('%' || LOWER(name) || '%'); person_rec person_rec_type; BEGIN display_person_head(name); IF NOT person_cur%ISOPEN THEN -- open the cursor if OPEN person_cur(name); -- not open yet END IF; -- Fetch rows into PL/SQL table LOOP FETCH person_cur INTO person_rec; EXIT WHEN person_cur%NOTFOUND; display_person_rec(person_rec); END LOOP; CLOSE person_cur; display_person_end; END get_person_by_name; PROCEDURE display_person_head(ctitle IN VARCHAR2) IS BEGIN htp.title('Query Results by Searching "' || ctitle || '"'); htp.p('<H1>Query Results by Searching "' || ctitle || '"</H1>'); htp.p('<BR>'); htp.p('<TABLE BORDER ALIGN="CENTER">'); htp.p('<TR>'); htp.p('<TD>Last Name</TD>'); htp.p('<TD>First Name</TD>'); htp.p('<TD>Title</TD>'); htp.p('<TD>User Name</TD>'); htp.p('<TD>Address</TD>'); htp.p('<TD>URL</TD>'); htp.p('</TR>'); END display_person_head; PROCEDURE display_person_rec(person_rec IN person_rec_type) IS url_string VARCHAR2(120); BEGIN htp.p('<TR>'); htp.p('<TD>' || INITCAP(person_rec.last_name) || '</TD>'); htp.p('<TD>' || INITCAP(person_rec.first_name) || '</TD>'); htp.p('<TD>' || INITCAP(person_rec.title) || '</TD>'); htp.p('<TD>' || person_rec.user_name || '</TD>'); htp.p('<TD>' || UPPER(person_rec.address) || '</TD>'); url_string := '<a HREF=http://www.npac.syr.edu/users/' || person_rec.user_name || '/homepage/ TARGET=wow_display>'; htp.p('<TD>' || url_string || htf.italic(person_rec.first_name) || '</a>' || '</TD>'); htp.p('</TR>'); END display_person_rec; PROCEDURE display_person_end IS BEGIN htp.p('</TABLE>'); END display_person_end; END phone_pkg; /"/" is SQL*Plus command to execute the SQL command ot PL/SQL block currently stored in the SQL buffer.
SQL> @ht.sql SQL> @wow.sql SQL> @phone_wow_pkg.sql
File: wow
#!/bin/csh setenv ORACLE_HOME /oracle/app/oracle/product/7.3.2 set path = ( ${ORACLE_HOME}/bin /bin /usr/bin /usr/ucb /usr/local/bin . ) setenv WOW_UID cps616/cps616 setenv ORACLE_SID osprey7 setenv DEBUG NONE /oracle/wow/wowstub $1 exit 0You need to setup the enviroment to use CGI scripts to interact Oracle database. Some important enviroment parameters are described as follow:
<FORM ACTION="http://osprey7.npac.syr.edu:3768/reference-cgi/cwou/database/plsql/wow/phone_pkg.get_person_by_name" METHOD="GET"> Enter the name: <INPUT NAME="name" VALUE="" SIZE=40> <BR> <INPUT TYPE="submit" value="Search"> <INPUT TYPE="reset" value="Cancel"> </FORM>