ࡱ; x  !"#$%&'()*+,./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyzRoot Entry  !r\V)䰱 PresentationStarImpress 5.01zDSSfxDocumentInfo  lX1& Ryan Brown lX1 uK Info 0 Info 1 Info 2 Info 3 lX1&` < TASK,0,1,H 1,0,100,1,Oh+'0 h t 5@2@)@bn@ݹn Ryan BrownXOutdevItemPool 1   )     &'()*+,-./06789:;UVWXYZ[\]c !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstt      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefd0\'@qXX',@X'.@2XXX' @X'@Arrow ArrowddXXXS'c@(ArrowddXX'.@^,XXX'"@,XX'@XX'@X @ @  @! @7 @M @c @y'@XX'b@̙XX X2XD'6@O22ddX'(@X'"@BMvv(@@SD@x^SI 0 s\ z 46ZBn8x)1̔.<觔B+̄ ޢ40:prf |q]~+H~|WFMbP@aoCē[ȡz6~U{߃**<@XXXX X&77<@IXXXX X&HH R@+'' XXX X&X,X2ff @ JJKKJJKKJJKKQQVVJJKKJJKKJJKK JJKKRR JJ JJKKXX X2XPXbXtXXX8p)W "8bFt$:Pf|,BXn4J`vX  0 F \ r  , B X n  z P!*EditEngineItemPool 6f%08g*|@e, ",StarBatsN -",StarBatsN -",StarBatsN -"` ` ,StarBatsN -" ,StarBatsN -",StarBatsN -"hh,StarBatsN -",StarBatsN -",StarBatsN -"pp,StarBatsN - "X,StarBatsN -",StarBatsN -",StarBatsN -"` ` ,StarBatsN -" ,StarBatsN -",StarBatsN -"hh,StarBatsN -",StarBatsN -",StarBatsN -"pp,StarBatsN - ",StarBatsN -",StarBatsN -",StarBatsN -"` ` ,StarBatsN -" ,StarBatsN -",StarBatsN -"hh,StarBatsN -",StarBatsN -",StarBatsN -"pp,StarBatsN - Z"|,StarBatsN -"|,StarBatsN -` ` ,StarBatsN K",StarBatsN -,StarBatsN K"pp,StarBatsN -"  ,StarBatsN -" ,StarBatsN -"%%,StarBatsN -"0*0*,StarBatsN -Z r,StarBats -r,StarBats -r,StarBats -r ,StarBats -r,StarBats -r,StarBats -rpp,StarBats -rXX,StarBats -r@@,StarBats -r(#(#,StarBats - "XX,StarBatsi -",StarBatsi -",StarBatsi -"` ` ,StarBatsi -" ,StarBatsi -",StarBatsi -"hh,StarBatsi -",StarBatsi -",StarBatsi -XX.XNXn XX @,@, XXZ@ -dddxxdddxYdddx dddY  ddd YDdddYDdddYDdddYD8ddd8YDXdddXYDxdddxYD!ddd!YDXX!X:XMXfXXXXXXX<( n@ u.,  XXXX X&X,X2X8X>XD ( /@ 0 StarBats!"-g StarBats!"- StarBats !K StarBats!r- StarBatsX!"- StarBats!"-T StarBats!"-J StarBats!"-  StarBatsX!KXXGXXXX+XdXX@'!n@2dddddXdddd,dd|d@ddd`  dddhddddddpddd  xddd (#ddd% 'ddd0* dddX dddYdddY|ddd` ddd` YdddYdddYpdddpY ddd Y ddd Y%ddd%Y 0*ddd0*YXX!X4XGXZXmXXXXXXXXXX7XJXcX|XXXXXA'@3ddddddddddddd,ddd dddXXX&X2X>XJXVXb1'@ 4dX+'(@54XXX' @W4!'@y4X'@4 TimesX' @ 55 Nd 4d d d {d d d hd d d d id XXX"X,X6X@XJXTX^XhXrX|?( @{5'@5 XX'@5 X'@5 X'@6QXX'@$6 X'@C6 X%' @]6S' @s6"' @6' @6@6X{(@w8p8http://dbase.cs.jhu.edu:8080/pls/cs415/summation?x=4&y=58http://dbase.cs.jhu.edu:8080/pls/cs415/summation?x=4&y=5W!X!pT!http://www.orafaq.org/faqjdbc.htm!http://www.orafaq.org/faqjdbc.htmW!X!pV"http://www.orafaq.org/faqloadr.htm"http://www.orafaq.org/faqloadr.htmW!X!pLhttp://dbase.cs.jhu.edu:8080/http://dbase.cs.jhu.edu:8080/W!X!XXXX[<k & Z p ~!!!!!""A"`"v"""""P=g* "XX,StarBatsN -",StarBatsN -",StarBatsN -"` ` ,StarBatsN -" ,StarBatsN -",StarBatsN -"hh,StarBatsN -",StarBatsN -",StarBatsN -"pp,StarBatsN - ( StarBats!"-!''Times'Od 08s2 +LStandardStandard#'''''''''''''''+;(,,--..g* (@'A'1'+'!'''''''''Object with arrowStandardObject with arrow'''''''Object with shadowStandardObject with shadow+;(,,--..Object without fillStandardObject without fill'TextStandardText'' Text bodyStandard Text body'''Text body justfiedStandardText body justfied''+'First line indentStandardFirst line indent''g*@'TitleStandardTitle'''Title1StandardTitle1 '''+;(,,--..+''Title2StandardTitle2 ''+;(,,--..g*@'A'+''HeadingStandardHeading''A''Heading1StandardHeading1''A'''Heading2StandardHeading2''A''''Dimension LineStandardDimension Line'''''''Home~LT~Gliederung 1Home~LT~Gliederung 1''g*@'A'+'!'''''''''Home~LT~Gliederung 2Home~LT~Gliederung 1Home~LT~Gliederung 2@'A'' Home~LT~Gliederung 3Home~LT~Gliederung 2Home~LT~Gliederung 3@'A''Home~LT~Gliederung 4Home~LT~Gliederung 3Home~LT~Gliederung 4@'A'' Home~LT~Gliederung 5Home~LT~Gliederung 4Home~LT~Gliederung 5@'A'' Home~LT~Gliederung 6Home~LT~Gliederung 5Home~LT~Gliederung 6@'A'' Home~LT~Gliederung 7Home~LT~Gliederung 6Home~LT~Gliederung 7@' A'' Home~LT~Gliederung 8Home~LT~Gliederung 7Home~LT~Gliederung 8@' A'' Home~LT~Gliederung 9Home~LT~Gliederung 8Home~LT~Gliederung 9@' A'' Home~LT~Titel Home~LT~Titel''QQg*+'!''' ''''''Home~LT~UntertitelHome~LT~Untertitel''QQg*@' +'!''' ''''''Home~LT~NotizenHome~LT~Notizen ''!'''''''''Home~LT~HintergrundobjekteHome~LT~Hintergrundobjekte+;(,,--..Home~LT~HintergrundHome~LT~Hintergrund''TitleTitle@SubtitleSubtitle@Background objectsBackground objects@ Background Background@NotesNotes@ Outline 1 Outline 1@ Outline 2 Outline 1 Outline 2@ Outline 3 Outline 2 Outline 3@ Outline 4 Outline 3 Outline 4@ Outline 5 Outline 4 Outline 5@ Outline 6 Outline 5 Outline 6@ Outline 7 Outline 6 Outline 7@ Outline 8 Outline 7 Outline 8@ Outline 9 Outline 8 Outline 9@tPDP8> p< n  x H t & Y %DrMdJoeMn0lX1(lX1ħlX1rODrLy LAYER_LAYOUTDrLy LAYER_BCKGRNDDrLy LAYER_BACKGRNDOBJDrLyLAYER_CONTROLSDrLy!LAYER_MEASURELINESDrMP'JoeMlTDrML DrOb<SVDr&0!&DrOb<SVDr&;6d!&DrOb<SVDr&-0DLDrOb<SVDr&;-6dDLDrXXgg fHome~LT~GliederungDrMPJoeM`mRDrML DrObSVDr&_mR'Home~LT~Hintergrund_mRDrObSVDr& oe! Home~LT~Titel oepxV4B1[#Click to edit the title text format Home~LT~Titel<( (@' DrObWSVDr& oe{J(Home~LT~Gliederung 1 oe{J xV4B1 %Click to edit the outline text formatHome~LT~Gliederung 1 <( (@'Second Outline LevelHome~LT~Gliederung 2 <( (@'Third Outline LevelHome~LT~Gliederung 3<( (@'Fourth Outline LevelHome~LT~Gliederung 4<( ( @'Fifth Outline LevelHome~LT~Gliederung 5<( (@'Sixth Outline LevelHome~LT~Gliederung 6<( (@'Seventh Outline LevelHome~LT~Gliederung 7<( (@'Eighth Outline LevelHome~LT~Gliederung 8<( (@'Ninth Outline LevelHome~LT~Gliederung 9<(  (@'  DrXXgg ^Home~LT~GliederungDrMPJoeMTlDrML DrObSVDr&5 B(0! Home~LT~Titel5 B(0dxV4B1OClick to move the slide Home~LT~Titel<( (@' DrObSVDr& 3OG"]#Home~LT~Notizen 3OG"]mxV4B1XClick to edit the notes formatHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPgcJoeMlTDrML8DrMD,DrXX Handoutsgg FHome~LT~GliederungDrPg JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oeexV4B1PDatabase Systems: PL/SQL Home~LT~Titel<( (@' DrObFSVDr& %gC Standard %gC xV4B1 2- PL/SQL is a procedural language, based upon PL/1Standard<( (@'-- PL/SQL adds procedural functionality to SQLStandard<( (@'5- PL/SQL is interpreted by the Oracle database engineStandard<( (@'2- PL/SQL procedures are stored in the table space.Standard<( (@'Standard<( (@' Basic Syntax:Standard<( (@' #create [or replace] procedure NAMEStandard<( (@'([(argument [IN | OUT | IN OUT] datatypeStandard<( (@'1[, argument [IN | OUT | IN OUT] datatype] ... )]Standard<( (@'{IS | AS} block;Standard<( (@'Standard<( (@'drop procedure NAME;Standard<( (@'DrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0DrObSVDr& 3OG#]#Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel} oe^xV4B1IExample Procedure Home~LT~Titel<( (@' DrObSVDr& ve6D Standard ve6Dl xV4B1C SThis example procedure does an INSERT, and takes the variable Person_Name as input.Standard<( (@'SStandard<( (@'5create procedure NEW_WORKER (Person_Name IN varchar2)Standard<( (@'ASStandard<( (@'BEGINStandard<( (@')insert into WORKER (Name, Age, Lodging)Standard<( (@'#values (Person_Name, null, null);Standard<( (@'END;Standard<( (@'/Standard<( (@'Standard<( (@'J.. note the / on a line by itself. This denotes the end of the procedure.Standard<( (@'JDrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPg]JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oe`xV4B1KDeclaring Variables Home~LT~Titel<( (@' DrObSVDr& g~@ StandardH g~@) xV4B1 PWe may also want to declare variables to use within our procedure. For example:Standard<( (@'PStandard<( (@'Acreate or replace procedure PrintMatches (SearchName IN varchar2)Standard<( (@'ISStandard<( (@'person contactinfo%ROWTYPE;Standard<( (@'CURSOR person_match ISStandard<( (@' SELECT *Standard<( (@'FROM contactinfoStandard<( (@'&WHERE contactinfo.name = SearchName;Standard<( (@'BEGINStandard<( (@'DrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPglJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titels oeTxV4B1?Cursors Home~LT~Titel<( (@' DrObSVDr& cEG Standardc cEGD xV4B1 Continuing our example...Standard<( (@'Standard<( (@'OPEN person_match;Standard<( (@' FETCH person_match INTO person;Standard<( (@'WHILE person_match%FOUND LOOPStandard<( (@'FPUT_LINE ('Name: ' || person.name || ', Phone #: ' || person.phone);Standard<( (@'!FETCH person_match INTO person;Standard<( (@' END LOOP;Standard<( (@'CLOSE person_match;Standard<( (@'END;Standard<( (@'/Standard<( (@'DrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPg?JoeM`mRDrML8DrMD,DrObSVDr& 8cN Standard 8cNgxV4B10lThe HTP library for PL/SQL has a number of functions that make printing a HTML formatted result very simple.Standard<( (@'lStandard<( (@'BEGINStandard<( (@'HTP.htmlOpen;Standard<( (@' HTP.headOpen;Standard<( (@' HTP.Title ('Scores');Standard<( (@' HTP.headClose;Standard<( (@'OPEN person_match;Standard<( (@' FETCH person_match INTO person;Standard<( (@'WHILE person_match%FOUND LOOPStandard<( (@'GHTP.print ('Name: ' || person.name || ', Phone #: ' || person.phone);Standard<( (@'!FETCH person_match INTO person;Standard<( (@' END LOOP;Standard<( (@'CLOSE person_match;Standard<( (@'HTP.bodyClose;Standard<( (@'HTP.htmlClose;Standard<( (@'END;Standard<( (@'/Standard<( (@'DrXXgg FHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0 DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oejxV4B1UAccessing PL/SQL from the web Home~LT~Titel<( (@' DrOb8SVDr&V cK StandardV cK xV4B1 aIn order to call our functions after they are in our table space, we need to create an HTML form.Standard<( (@'aStandard<( (@'Standard<( (@'*My PL/SQL TestStandard<( (@'Standard<( (@'Q
Standard<( (@'
Enter name to search for:Standard<( (@'%Standard<( (@'$Standard<( (@'
Standard<( (@'Standard<( (@'Standard<( (@'Standard<( (@'DrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0 DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPgaJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oe`xV4B1KPL/SQL from the web Home~LT~Titel<( (@' DrOb$SVDr& <cMH Standard <cMHxV4B1eUpon typing a name into the form and clicking "Search", the web browser will fetch the following URL:Standard<( (@'eStandard<( (@'Hhttp://dbase.cs.jhu.edu:8080/pls/cs415/PrintMatches?SearchName=Bob+SmithStandard<( (@'Standard<( (@'The web server running on dbase (Apache) will call your PL/SQL procedure called PrintMatches with the argument of "Bob Smith" for the SearchName variable.Standard<( (@'Standard<( (@'The web server will also ask you for the login & password the first time you try and run a PL/SQL query. Enter your Oracle User Name & Oracle Password. This allows the web server to connect to the correct table space & run your procedure.Standard<( (@'DrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0 DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPg`JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel} oe^xV4B1ISummation Example Home~LT~Titel<( (@' DrObSVDr& 5g!Q StandardM 5g!Q.xV4B1Bcreate or replace procedure summation (x IN NUMBER, y IN NUMBER ) Standard<( (@'ISStandard<( (@' sum NUMBER;Standard<( (@'BEGINStandard<( (@'sum := x + y;Standard<( (@'htp.htmlopen;Standard<( (@'htp.headopen;Standard<( (@'htp.title('Sum');Standard<( (@'htp.headclose;Standard<( (@'htp.bodyopen;Standard<( (@']htp.print( 'The Sum of ' || to_char(x) || ' and ' || to_char(y) || ' is ' || to_char(x+y) );Standard<( (@'htp.bodyclose;Standard<( (@'htp.htmlclose;Standard<( (@'END;Standard<( (@'/Standard<( (@'DrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPg[JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel} oe^xV4B1ISummation Example Home~LT~Titel<( (@' DrObSVDr& 7,eN StandardH 7,eN)xV4B1=To reach our summation example from our web browser, we type:Standard<( (@'=Standard<( (@'Standard<( (@'Standard<( (@'%Likewise, we could make an HTML form:Standard<( (@'%Standard<( (@'"summerStandard<( (@'Standard<( (@'N
Standard<( (@'$x =
Standard<( (@'$y =
Standard<( (@'Standard<( (@'
Standard<( (@'Standard<( (@'Standard<( (@'DrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oeaxV4B1LAdding HTML tables.. Home~LT~Titel<( (@' DrObSVDr& \Vf%K Standardl \Vf%KM xV4B1" \Back to our PersonMatch example, lets put the output in an HTML table so it is easy to read:Standard<( (@'\Standard<( (@'"HTP.print ('');Standard<( (@'<HTP.print ('');Standard<( (@'OPEN person_match;Standard<( (@' FETCH person_match INTO person;Standard<( (@'WHILE person_match%FOUND LOOPStandard<( (@'WHTP.print ('');Standard<( (@'!FETCH person_match INTO person;Standard<( (@' END LOOP;Standard<( (@'CLOSE person_match;Standard<( (@'HTP.print ('
NamePhone Number
' || person.name || '' || person.phone || '
');Standard<( (@'DrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oeixV4B1TAn aside on meta information Home~LT~Titel<( (@' DrObISVDr& 2g( Standard 2g(xV4B1mOracle has a number of views that you can select from to get information about the items in your table space:Standard<( (@'Standard<( (@'#SELECT table_name FROM user_tables;Standard<( (@'+SELECT procedure_name FROM user_procedures;Standard<( (@'!SELECT view_name FROM user_views;Standard<( (@'DrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPg'JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oeexV4B1PPERL Interface to Oracle Home~LT~Titel<( (@' DrObSVDr& \fu: Standard \fu:pxV4B1S- PERL has a DBI (DataBase Interface) library that allows users to incorporate a connection to a relational database into their PERL programs.Standard<( (@' Standard<( (@' S- The DBD::Oracle module defines how the DBI module connects to an Oracle database.Standard<( (@' SStandard<( (@' o- The DBI module may be used in any script, including a standalone application, GUI application, or CGI script.Standard<( (@' oDrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oefxV4B1QPERL Command Line Example Home~LT~Titel<( (@' DrObSVDr&Q Xrd!J StandardhQ Xrd!JIxV4B1#!/usr/local/bin/perlStandard<( (@'Standard<( (@'use DBI;Standard<( (@'Standard<( (@'%$ENV{ORACLE} = "/home/oracle/oracle";Standard<( (@'3$ENV{ORACLE_HOME} = "/home/oracle/oracle/OraHome1";Standard<( (@'3$ENV{ORACLE_BASE} = "/home/oracle/oracle/OraHome1";Standard<( (@'$ENV{ORACLE_SID} = "dbase";Standard<( (@'Standard<( (@'$username = "xcatalina";Standard<( (@'$password = "tarxfdfm";Standard<( (@'Standard<( (@'7$Db = DBI->connect("dbi:Oracle:", $username, $password,Standard<( (@'> { AutoCommit => 0, PrintError => 0})Standard<( (@'2 || die("Can't login to Oracle: $DBI::errstr\n");Standard<( (@'DrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPg=JoeM`mRDrML8DrMD,DrObSVDr&Tes! Home~LT~TitelTesfxV4B1QPERL Command Line Example Home~LT~Titel<( (@' DrOb|SVDr& UfR Standard& UfRxV4B10print "Enter the name you want to search for: ";Standard<( (@' $name = <>;Standard<( (@' chomp $name;Standard<( (@'Standard<( (@'Smy $query_string = qq(SELECT * FROM contactinfo WHERE contactinfo.name = '$name');Standard<( (@')my $handle = $Db->prepare($query_string);Standard<( (@'if (! ($handle->execute ())) {Standard<( (@'.print STDERR "Oracle Error: " . $DBI::errstr;Standard<( (@'}Standard<( (@'else {Standard<( (@'0my ($name, $phone) = $handle->fetchrow_array();Standard<( (@'while (defined ($name)) {Standard<( (@'.print "Name: $name, Phone Number: $phone\n";Standard<( (@'.($name, $phone) = $handle->fetchrow_array();Standard<( (@'}Standard<( (@'}Standard<( (@'Standard<( (@'DrXXgg JHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPgdJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oefxV4B1QPERL Command Line Example Home~LT~Titel<( (@' DrObSVDr& ec) StandardI ec)*xV4B1 =$handle->finish();# closes query handle, frees up temporaryStandard<( (@'&$handle = undef;# tables and cursorsStandard<( (@'/$Db->disconnect();# closes database connectionStandard<( (@'+$Db = undef;# frees up temporary buffersStandard<( (@'  Standard<( (@' exit (0);Standard<( (@'DrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPg#JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel| oe]xV4B1HMore Information Home~LT~Titel<( (@' DrObgSVDr& c3 Standard c3xV4B1SFor more information on PL/SQL and running CGI scripts on the dbase machine, go to:Standard<( (@'SStandard<( (@'Standard<( (@'Standard<( (@'Please do not make your procedures for Homework 3 public. We have your Oracle passwords and will log in as you to test your homework.Standard<( (@'DrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel{ oe\xV4B1GOther Languages Home~LT~Titel<( (@' DrObSVDr& \emG Standard \emGe xV4B1> ZSimliar to the PERL interface, there are also interfaces for Java, C, and other languages:Standard<( (@'Standard<( (@'For information on JDBC:Standard<( (@'Standard<( (@'Standard<( (@'Additionally, there is an easy way to get large amounts of data from a structured format into your database, called the SQL Loader. Example command line:Standard<( (@'D~oracle/bin/sqlldr userid=username/password control=foo logfile=logStandard<( (@'Standard<( (@'For more information:Standard<( (@'Standard<( (@'DrXXgg NHome~LT~GliederungDrPg|JoeMTlDrML8DrMD,DrOb<SVDr&5 B(0!DrObSVDr& 3OG#]# Home~LT~Notizen 3OG#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrXXFHP LaserJet 4MLHP4ML_V1 PostScriptH`Tl`Tld,,ssh isthmus lpristhmus_queueHP4ML_V1 DrVwP SVDr SVDr:SVDr{{SVDrALayout:SVDr{{SVDr#SVDr SVDr# SVDr0 SVDr1 SVDr3 SVDr4SVDr@SVDr SVDrD SVDrP SVDrQ DrHL DrHL DrHL 1zDS Root Entry!r\V)䰱CompObjEOle persist elements"SfxDocumentInfo uSfxWindowsSfxStyleSheetsLSummaryInformation(0StarDrawDocument3$-c