    16 
     

    Oracle 

            Oracle  ' 
   Delphi   .   
   SQL  Oracle    
 Oracle  Delphi.   ,    
 Oracle    . ,   
 .    . 

      

              
.        Windows 95  
Windows NT.         
  . 
      Oracle  ,    
  Windows.     ,        
Oracle Instance Manager  (  Windows NT)   Control Panel.  
 Oracle  Windows NT   ,   
  OracleStartORCL,  ORCL      . 

       

          Oracle    
     Oracle SQL Net.  
     Oracle   
ORAINST.       
   (Database Aliases)   ,   
,      .    
     BDE Delphi,    
  Oracle,        . 
          Oracle   
  SQL Net  Windows 95  Windows NT,  
 SQL Net Easy Configuration,   Add Database Alias  
   . 
             
.    ,      
     . 
           .  
,        (, 
TCP/IP),     . 
            
   .     TCP/IP,  
      ,       HOSTS. 
   IP- .   Personal Oracle   
  ,   ,    IP-    
    TCP/IP, .. 127.0.0.1 (  
      ).   
    SPX,     
   SPX.        . 

    326	 III.   

             
   .       . 
           SQL Net  Exit 
        . 
             
  .        Oracle 
SQL*Plus  : 
    sqlplus   _/ @<>.<> 
     _    , ,     
,         . 
     ,         
  Oracle TNSPING.      ,   
   PING  UNIX. 

      

        Personal Oracle,     
 ,        TCP/IP. 
       IP-    
127.0.0.1.    TCP/IP    
Windows 95  Windows NT.   ,     ,  
     Oracle.	9*Sllli 

       

              
 BDE       Delphi.   
      ,      
           
     BDE. 
     BDE      BDE Administrator,   
  Delphi Database Explorer.    
   BDE Administrator. 
      BDE Administrator       
   Delphi,     Windows Control Panel ( ).	s 
    1.      BDE Administrator     
Configuration  Configura-tion^Drivers^Native^Oracle. 
    2.      VENDOR INIT   Definition   
  Oracle,    Oracle,   
 . ,     Oracle 7.2  
  ORA72.DLL. 
     ,         
.         
 ,   . 
    3.         Databases    New  
 .     New Database Alias 
  Oracle    Database Driver Name   
  . 
    4.           . 
    5.          Definition. 
    6.       SERVER NAME      
  .       ,  
    SQL Net. 
    7.          USER NAME   
,      .   
         
  Delphi. 
          Apply (  <Ctrl+A>), 
     BDE Administrator. 

     16. Oracle 327 

     ,     BDE 
Administrator,      Windows   : 

    HKEY_LOCAL_MACHINESSOFTWARE\BORLAND\DATABASE ENGINEXSETTINGS 

       , ,    
    JjBDE Administrator  Delphi Database Explorer. 
         BDE Administrator,  
     ,  . 

    ENABLE INTEGERS 

     ENABLE INTEGERS ,    BDE   
 NUMERIC,      , .  
      NUMERIC     
.  
          ENABLE BCD,    
 . 

     

     Oracle     ,  
.      Oracle  
     LIST SYNONYMS.   
     Params  Database. 
 . 16.1     . 

     16.1.    LIST SYNONYMS 

    	 

    NONE	  
    PRIVATE	__                  
    ALL	___            _____       (  )  

              Params 
 Database         : 

    LIST SYNONYMS=ALL 

      

       LIST SYNONYMS  ALL,    
       ( PUBLIC.   
,    ,    
SELECT  ,   .   (  
 )    ,     
 ,      . ,   
 ,     . 
        Oracle    
  .        
 SYS.      $,     
 (, LOCK, OPEN_CURSOR  ..) 

          Oracle 

         Oracle  ,  
 . 
    1.         Oracle SQL*Plus.   
    ,    Delphi , , 
,      BDE.    
BDE Administrator     ( ,  ). 

    328	 III.   

        Oracle SQL* Plus  ,   
  .        
TCP/IP,        PING, 
    Windows 95  Windows NT.   
   ,    HOSTS,    IP-. 
          PING  IP-  
,     ,  , ,    HOSTS. 
          SQL 
Net  ,     IP-.   
 HOSTS     ,    
         . 
           SPX,  , 
    SPX   ,     
 SQL Net.   ,      , 
   -  ,   
  
       TCP/IP,    PING   ,   
 IP-  , ,   ,    . 
   ,   IP- .  
     TCP/IP, 127.0.0.1,  
    TCP/IP.      
    , ..      
.     ,      
 .       
 . 
       SQL*Plus  ,    P1NG 
 ,  ,      PATH 
 Oracle.   PATH  ,     
(_) \NETWORK\ADMIN\TNSNAMES.ORA.   ,   
     TYPE    ,  
          
 SQL Net.    ,      
  . 
    SCOTTSDATABASE.world = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = 
    (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = 127.0.0.1) (Port = 1521) 
) (ADDRESS = 
    (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = 127.0.0.1) (Port = 1526) 
    ) 
    (CONNECT   DATA 
    (SID  =  ORCL) 
    7.       ,   ,  ,  
    (  ,   ). 
          
,       ,   
   . ,      
(.. ,       )   
 Oracle Bequeath    (loop-back) , 
     . 

     SQL 

              SQL  
Oracle    ,      
SQL.   ,          
 Oracle SQL* Plus  . 

     16. Oracle 329 

       

      , ,   ,    
      .  ,     
 .  SQL     CREATE DATABASE.  
      SQL.    Oracle: 

    CREATE DATABASE  LOGFILE _ DATAFILE _; 

          .     
Oracle            . 
  ,     - * ,    
  : 

    CREATE DATABASE; 

             , 
         .	 
    ,   ,    DBF  DAT,  
      .  ,  
          
     . 

     CONNECT 

     CONNECT  Oracle      
 .    : 

    CONNECT USER/ 

        ,     
.      ,   @   
  .       : 

    CONNECT SYS/57RIVERSIDE; 

       ,   
CONNECT,   DISCONNECT: 

    DISCONNECT; 


      

             . 
        
      .     
      ,  .   
 SQL CREATE TABLE.    CUSTOMER    
  SQL  SQL*Plus  . 

    CREATE TABLE CUSTOMER 
    ( 
    CustomerNumber	number  NOT  NULL, 
    LastName	char (30), 
    FirstName	char (30), 
    StreetAddress	char (30), 
    City	char (20), 
    State	char (2), 
    Zip	char(10) 
    ) 

           SALE. 

    CREATE TABLE SALE ( 
    SaleNumber number NOT NULL, SaleDate date, 
    CustomerNumber number NOT NULL, ItemNumber number NOT NULL, Amount	number (5,2) 

    330	 III.   

    ,  SALE .      ITEM,   
  . 

    CREATE TABLE ITEM 
    ItemNumber 
    Description 
    Price 
    number char(30) , number(5,2) 
    NOT  NULL, 

      

      Oracle   CREATE TABLE    
.  ,        
   (tablespace)    ,  
        .  
~~       , 
,  . 

    CREATE  TABLESPACE   salestables   DATAFILE 
'C:\ORANT\DATABASE\salestables.dbf   SIZE   250K 

              , 
   TABLESPACE, : 

    CREATE "TABLE ITEM 
    ( 
    ItemNumber       number    NOT NULL, 
    Description      char(30), 
    Price	number(5,2) 
    ) 
    TABLESPACE salestables 

             , 
         .    
   ,  -~_   (  
    ),    
 . 

         AS 

         CREATE TABLE   
       .     
 Transact-SQL  SQL Server   SELECT . . . INTO. 
      Oracle     
 ,     .    
   ,    .  : 

    CREATE TABLE LARGE_SALE 
    AS SELECT * FROM SALE WHERE Amount > 50; 

     ,        ,  
        .   - 
       CREATE VIEW, , 
     AS,    ,  
 . 

    UNRECOVERABLE 

            , 
       .    
   

    UNRECOVERABLE   CREATE TABLE.  : 
    CREATE TABLE LARGE_SALE 
    UNRECOVERABLE 
    AS SELECT * FROM SALE WHERE Amount > 50; 

      PARALLEL 

             
   PARALLEL.     
      . ,   
  LARGE_SALE    . 

    SALE 
    CREATE TABLE LARGE_ UNRECOVERABLE PARALLEL (DEGREE 5) AS SELECT * FROM SALE 
    WHERE Amount > 50; 

     16. Oracle 331 

              
 ,      . 
         
            
 SQL ALTER TABLE.       
    (,    
  Microsoft SQL Server),       Oracle. 
      : 

    ALTER TABLE CUSTOMER 
    ADD (PhoneNumber char(10)) 

        : 

    ALTER TABLE CUSTOMER 
    MODIFY (PhoneNumber char(13)) 

     ,     NOT NULL    
,     ,      
    NULL. 

     

     (constraint)      
  .        
  .         
  CREATE TABLE,   ,    ALTER 
TABLE.     : 

    ALTER TABLE CUSTOMER 
    ADD PRIMARY KEY (CustomerNumber) 

         CUSTOMER   
,      CustomerNumber.    
   ,      
CustomerNumber.  ,       
 ,   NULL. 
          ,  
     ,  .   
  ,       . 
,      ()   
 .    : 

    ALTER TABLE SALE 
    ADD CONSTRAINT INVALID_CUSTOMER_NUMBER FOREIGN KEY (CustomerNumber} 
REFERENCES CUSTOMER 

        CustomerNumber  SALE  , 
      CUSTOMER.  ,  
   SALE       
CUSTOMER,   to,  ,    SALE,  
   CUSTOMER.       
        
 (declarative referential integrity).   ,  
          
       ,     . 
             
  .     : 

    ALTER  TABLE   CUSTOMER 
    ADD  CONSTRAINT   INVALID_STATE   CHECK   (State   in   ('OK1,    !AR',    'MO')) 

         ,   . 
   ,        
          
 .  ,       
   ,  Delphi  , 
  . 

    332	 III.   

      

       Oracle SQL   CREATE INDEX.    : 

    CREATE INDEX SALE02 ON SALE (SaleDate) 

     SALE02    , SALE   ,    
, a SaleDate   .    ,    
Oracle       ,    ,  
  ,     ,     
       . 
         CREATE UNIQUE INDEX  ,  
 : 

    CREATE  UNIQUE   INDEX  SALE01   ON   SALE   (SaleNumber) 

    ^  ,    CREATE INDEX    
DESC,    " .  Oracle  
   ,    ASC  DESC  
    DB2. 

      UNRECOVERABLE  PARALLEL 

      UNRECOVERABLE  PARALLEL,       
 CREATE TABLE,      CREATE INDEX.  
      . 

    NOSORT 

      NOSORT     Oracle,   
     .    
 ,     ,     
 . 

      

      ,        
,   .         
       . 

      

     SQL INSERT       Oracle.  
   VALUES  INSERT    ; 
       ,      
 .           
  ,  .     
  CUSTOMER (         SQL*PLUS). 

    INSERT   INTO  CUSTOMER   (CustomerNumber,   LastName, FirstName,   
StreetAddress,   City,   State,   Zip) VALUES(1,'Doe','John','123   
SunnyLane','Anywhere', 'MO' , '73115' ) ; 
    INSERT   INTO  CUSTOMER   (CustomerNumber,   LastName, FirstName,   
StreetAddress,   City,   State,   Zip) VALUES(2,'Doe','Jane','123   
SunnyLane','Anywhere', 'MO','73115'); 
    INSERT   INTO CUSTOMER   (CustomerNumber,   LastName, FirstName,   
StreetAddress,   City,   State,   Zip) VALUES(3,'Philgates','Buck','57   
Riverside','Reo', 'AR', '65803' ) ; 

           ITEM. 

    INSERT   INTO  ITEM   (ItemNumber,   Description,   Price) 
    VALUES(1001,'Zoso  LP',13.45) 
    INSERT INTO ITEM (ItemNumber, Description, Price) 
    VALUES(1002,'White LP',67.90) 
    INSERT INTO ITEM (ItemNumber, Description, Price) 
    VALUES(1003,'Bad Co. LP',11.45) 

     16. Oracle 333 

    ,      SALE. 

    INSERT   INTO  SALE   (SaleNumber,   SaleDate,   CustomerNumber, 
    ItemNumber,   Amount) 
    VALUES(101, 8--901,1,1001,13.45) 
    INSERT INTO SALE (SaleNumber, SaleDate, CustomerNumber, 
    ItemNumber, Amount) 
    VALUES(102, '27-FEB-921,2,1002,67.90) 
    INSERT INTO SALE (SaleNumber, SaleDate, CustomerNumber, 
    ItemNumber, Amount) 
    VALUES(103, '20-MAY-951 ,3,1003,11.45) 
    INSERT   INTO  SALE   (SaleNumber,   SaleDate,   CustomerNumber, 
    ItemNumber,   Amount) 
    VALUES(104,'27-NOV-97',I,1002,67.90) 

     ,        
        ,   
       .  : 

    INSERT   INTO   ITEM   (Price,    ItemNumber)      VALUES(13.45,1001) 


     UPDATE 

     SQL UPDATE    ,   
  .  UPDATE     WHERE,  
  ,     .  
  : 

    UPDATE CUSTOMER SET Zip='65803' WHERE City='SpringField' 

       WHERE   UPDATE    , 
    , ,   ;     
      

    WHERE: 
    UPDATE CUSTOMER 
    SET   State='MO' 

            
 ,     . ,  
       ITEM   . 
   UPDATE   . 

    UPDATE   ITEM 
    SET Price=Price+(Price* . 07) 


     DELETE 

           DELETE.   
 ,   : 

    DELETE FROM CUSTOMER 

     DELETE     WHERE    : 

    DELETE FROM CUSTOMER WHERE LastNameO'Doe' 


      

     (transaction)      .  
 Oracle      CONNECT, COMMIT  ROLLBACK 
   .      
   COMMIT,    ROLLBACK.    
   ,       
 COMMIT;       . 

    334	 III.   

     Oracle SQL* Plus      
   .       
 .        
    COMMIT  ROLLBACK, . 

      

    i:B Oracle     (Data Definition Language  
DDL)    | ,   .    
   DDL   COMMIT. j  ,  
  DDL   Oracle  . 

     SELECT 

      SQL SELECT   .    
   ,    ,   
 .      SELECT * FROM _, 
 _    (..  CUSTOMER, SALE  ITEM).  
        ,   ,  
 .      SELECT. 
      SELECT *      .  
  ,     ,    
 . 

    SELECT  CustomerNumber,   LastName,   State   FROM  CUSTOMER 


       

          SELECT     
  ,   (expression column),  
 ,   .    SELECT, 
     SALE       $15: 

    SELECT   SaleNumber,SaleDate,Amount+15  AmountPlusShipping FROM  SALE 


      

      (aggregate column)   ,   
 -     .  
     COUNT, SUM, AVG, MIN  MAX.  
   .     
,   . 

    SELECT COUNT(*) FROM CUSTOMER 

          . SELECT  
MAX(Amount)    FROM   SALE 

           . 

    SELECT   SUM(Amount)    FROM  SALE 


      WHERE 

      SQL WHERE      
 ,   SELECT.   .  
   ,   .  (   ). 

    SELECT * FROM CUSTOMER WHERE State='MO' 

         ,     
    Sunny. 

    SELECT * FROM CUSTOMER 
    WHERE StreetAddress LIKE '%Sunny%' 

     ,         
 .    ,    UPPER  
         . 

     16. Oracle 335 

            $500. 

    SELECT * FROM SALE WHERE Amount > 500 

           ,     
18  1990 .  20  1995 . . 

    SELECT * FROM SALE 
    WHERE SaleDate BETWEEN 8--90' AND '20-MAY-95' 


     

      WHERE        
     .     
     WHERE      
  SELECT.       
 SELECT   FROM,     
 ,        (=)  
 ,      WHERE  , 
    .  : 

    SELECT  CUSTOMER.CustomerNumber,   SALE.Amount 
    FROM  CUSTOMER,    SALE 
    WHERE  CUSTOMER.CustomerNumber=SALE.CustomerNumber 

       ,   ,    FROM, 
  SALE,    ,     CUSTOMER  
SALE       CustomerNumber. , 
      ,   
   ,         
(left join)        SQL. 

          

             
   (inner join).   
      ,    
.   ,    (outer join) 
     ,     
,           
   NULL.       
SQL  Oracle: 

    SELECT  CUSTOMER.CustomerNumber,   SALE.Amount 
    FROM   CUSTOMER,    SALE 
    WHERE   CUSTOMER.CustomerNumber(+)=SALE.CustomerNumber 

     ,       
  (+).        
  . 
            (+) 
   .  ,      
     ,     
.

      

      (multi-tier join)  , 
   .      ,   
     .   . 

    SELECT  C.LastName,.FirstName,I.Description,S.Amount 
    FROM  CUSTOMER  C, 
    SALE   S, 
    ITEM   I 
    WHERE C.CustomerNumber=S.CustomerNumber 
    AND S.ItemNumber=I.ItemNumber 

        CUSTOMER  SALE      
 CustomerNumber.     ,  ItemNumber, 
  SALE  ITEM.        
   . 

    336	 III.   

     

        ,     
   .      
(reflexive)   (self-join).   . 

    SELECT   S.CustomerNumber,   S.Amount, 
    (S.Amount   /   SUM(S2.Amount))*100   Percentage FROM   SALE   S, SALE   S2 
    WHERE  S.CustomerNumber=S2.CustomerNumber GROUP  BY  S.CustomerNumber,   S.Amount 

             
 ,         
  .        
 SELECT   .    
  ,    SALES     
      .    
          . 

    - 

     memo- (theta join)      
 ,     .    
     (<>).   
 -;   ,    
 . 

    SELECT  .CustomerNumber,S.Amount,SUM(S2.Amount)   OTHERS 
    FROM  CUSTOMER  C, 
    SALE   S, 
    SALE   S2	  ' 
    WHERE  C.CustomerNumber=S.CustomerNumber 
    AND  C.CustomerNumber<>S2.CustomerNumber 
    GROUP  BY  C.CustomerNumber,   S.Amount 

         . -,  
       CUSTOMER  SALE. 
-,  -    ,   
   .          
SALE     ,      . 

      

      (Cartesian product)      
     .    
   ,      
   .  : 

    SELECT  SALE.SaleNumber,    ITEM.ItemNumber 
    FROM   SALE,    ITEM 
    ORDER BY   SaleNumber,   ItemNumber 

             
   .      
,  ,    . ,  
    100    10000 .  
     ,    . 

      

      (subquery)   SELECT,   
  WHERE   SELECT.    
    ,      
  . 

    SELECT * FROM CUSTOMER 
    WHERE CustomerNumber IN(SELECT CustomerNumber FROM SALE) 
    
     16. Oracle 337 

    GROUP  BY 

     SQL   ,   , 
       . - 
 SQL     ,   10,    50,  
 - . ""    
 GROUP BY  SELECT     SQL.   
   GROUP BY. 

    SELECT  CUSTOMER.CustomerNumber,   sum(SALE.Amount)   TotalSale 
    FROM  CUSTOMER,   SALE 
    WHERE  CUSTOMER.CustomerNumber=SALE.CustomerNumber 
    GROUP  BY  CUSTOMER.CustomerNumber 

              
  . 
     ,     ,    
GROUP BY?   Oracle (  SQL  ANSI)   
        ,  
    SELECT. 

    HAVING 

      HAVING  SELECT     
 ,      GROUP BY.  
    GROUP BY     SELECT 
   WHERE,   ,  HAVING    
   ,     . 
           ,    
 .  ,  HAVING  , 
 WHERE,            
,       .       
   HAVING. 

    SELECT   CUSTOMER.LastName,   COUNT(*)   NumberWithName 
    FROM  CUSTOMER 
    GROUP  BY  CUSTOMER.LastName 
    HAVING   COUNT(*)    >   1 

      HAVING      
      .    
  WHERE   ,  ,   
,        . 

    ORDER  BY 

      ORDER BY       
.    . 

    SELECT * FROM CUSTOMER ORDER BY STATE 

            
   .       SELECT,   
      ,     , 
   . 

      

    ,  , ,      
 COUNT ()  SUM ()     . 
     (column alias)    
,         .   
 SQL  Oracle        
     SELECT. ,   
   COUNT (),   ,  
 NumberWithName. 

    SELECT   CUSTOMER.LastName,   COUNT(*)   NumberWithName 
    FROM  CUSTOMER 
    GROUP  BY  CUSTOMER.LastName 
    HAVING   COUNT(*)    >   1 

    338	 III.   

            
 ,       . 

    SELECT  CUSTOMER.LastName   LNAME,   COUNT (*)   NumberWithName 
    FROM  CUSTOMER 
    GROUP  BY  CUSTOMER.LastName 

             LastName 
  LName.  ,    
    , ,   WHERE  GROUP BY  
      . 

      

     ,      SELECT    
,         .  
     (table alias)   , 
     FROM  SELECT.  
     ,     . 

    SELECT  .LastName,   COUNT(*)   NumberWithName FROM  CUSTOMER   GROUP  
BY  C.LastName 

     ,        
 SELECT     .   
 ,          
 . 

     

     (view)   SQL     SELECT, 
          , ,  
 ,     SELECT.     
     INSERT, DELETE  UPDATE.   
          
.     SQL-,  
   .      
   SELECT,    , 
   ,   ,    
,     . 
     SQL     CREATE VIEW.  : 

    CREATE VIEW MOCUSTOMERS AS SELECT * 
    FROM CUSTOMER 
    WHERE State='MO' 

               , 
  . 

    SELECT * FROM MOCUSTOMERS 

         ,     
  WHERE    SELECT,   
,   ,  WHERE ,   
      . 
     SELECT,   ,    
   ,     SELECT,   :   
    ORDER BY.      
 Oracle,     Sybase SQL Server, Microsoft SQL Server  InterBase. 
         ,   
,         
,   .  ,     
,          
     .      
 WITH CHECK OPTION   CREATE VIEW.   
 : 

    CREATE VIEW MOCUSTOMERS AS SELECT * 
    FROM CUSTOMER 
    WHERE State='MO' WITH CHECK OPTION 

     16. Oracle	339 

             
  ,     State  ''. 

      

      (stored procedure)   
   SQL,         
.     GREATER PROCEDURE,  
   SQL  Oracle  . 

    CREATE  OR  REPLACE   PROCEDURE   increaseprices 
    AS 
    BEGIN 
    UPDATE   ITEM  set   Price=Price+(Price*.05); END; 

       - ,    
.    Oracle: 

    CREATE  OR  REPLACE   PROCEDURE   increaseprices (increasepercent number) 
AS BEGIN 
    UPDATE   ITEM  set   Price= 
    Price+(Price*(increasepercent/100); END 


     

            (Data 
Definition Language  DDL),     ,   
  (script) SQL.        
;     SQL   
   . ,      
   USE  SET TERM.   Oracle SQL  
    Run an ISQL Script  File  
SQL*Plus.   16.1     SQL. 

     16.1.     SQL- 

    CONNECT SCOTT/TIGER 
    SPOOL PRICE 
    PROMPT BUILDING PROCEDURE increaseprices 
    CREATE OR REPLACE PROCEDURE increaseprices (increasepercent number) 
    IS 
    BEGIN 
    UPDATE ITEM set Price= 
    Price+(Price*(increasepercent/100)); END / 
    SPOOL OFF EXIT; 

         SPOOL     
    ,      PROMPT 
     .    
    ,     
  . 

       

      Oracle     ,   
  , : 
    Increaseprices(5); 

    340  III.   

     

     (trigger)      ,  
      .     SQL,  
        
: ,    , ..    
.      Oracle SQL: 

    CREATE  TRIGGER  SALEDelete   BEFORE   DELETE 
    ON  CUSTOMER 
    BEGIN 
    DELETE   FROM  SALE 
    WHERE  CustomerNumber=OLD.CustomerNumber; END; 

              
SALE,          CUSTOMER. 
    (cascading delete),   
           
 ,     . 
          OLD.  
     ,      
  UPDATE  DELETE.   NEW   
   ,        INSERT 
 UPDATE. 
           BEFORE   
    (BEFORE),    (AFTER)   
INSERT, UPDATE  DELETE. 

     

     (cursor)    SQL     
.       SQL,    
 BDE,          . 
         : , , 
   .        
  . 
        SELECT  (  
)   .    : 
    DECLARE CUSTOMER_SELECT CURSOR FOR SELECT * FROM CUSTOMER 
       ,  ,   .  
 ,    ,  
 OPEN. 

    OPEN CUSTOMER_SELECT 

      OPEN      .   
   FETCH. 

    FETCH CUSTOMER_SELECT 

              
.    FETCH     , 
      :   
 FETCH      .   
    CLOSE      OPEN. 

      
      Oracle    (bidirectional 
cursor)           Delphi.  
BDE      -   
  ,     .    
  ,  TQuery  ,    , 
  . 

     16. Oracle 341 

    ,    ,    
    UPDATE  DELETE.   
    FOR UPDATE OF.    : 

    DECLARE CUSTOMERJJPDATE CURSOR 
    FOR SELECT * FROM CUSTOMER FOR UPDATE OF LastName 

      
     ,      FOR UPDATE OF, 
    ,      
.         . 

              
 DELETE  UPDATE    WHERE 
CURRENT OF _,    : 

    UPDATE CUSTOMER 
    SET LastName="Cane" 
    WHERE CURRENT OF CUSTOMERJJPDATE 
     
    DELETE   FROM  CUSTOMER 
    WHERE  CURRENT  OF  CUSTOMERJJPDATE 
           CLOSE.   : 
    CLOSE CUSTOMER UPDATE 


     

               
Oracle.          .  
   ,       
   Delphi,     Oracle. 

      

      17,  "InterBase",   ,  
  Delphi       InterBase. 

    342       III.  