TYPE DateList AS VARRAY(10) OF DATE;
v_DateList DateList; -- локальный тип
v_Names NameList; -- глобальный тип
BEGIN ... END;
CREATE OR REPLACE TYPE ArrStr AS VARRAY(20) OF VACHAR2(30);
CREATE TABLE Varray_Tab ( Id NUMBER PRIMARY KEY,Name VARCHAR2(20),
VarStr ArrStr);
INSERT INTO Varray_Tab VALUES(1, ’Фрукты’, ArrStr(’Груша’, ’Слива’, ’Персик’));
* Программные единицы PL/SQL
Подпрограммы (процедуры, функции), пакеты, триггеры
Процедуры (PROCEDURE)
CREATE [OR REPLACE] PROCEDUREpr [(пар_1 [IN | OUT | IN OUT] тип,
[пар_2 [IN | OUT | IN OUT]тип, ... )]
AS <тело процедуры = блок>;
Тело –
BEGIN ... [EXCEPTION<обработка исключений>] END ;
DROP PROCEDURE pr;
Функции (FUNCTION)
CREATE [OR REPLACE] FUNCTIONf [(пар_1 [IN | OUT | IN OUT] тип,
[пар_2 [IN | OUT | IN OUT]тип, ... )]
RETURN< тип результата> AS< тело функции=блок>;
CREATE OR REPLACE FUNCTION TestReturn (ParIn IN INTEGER)RETURN VARCHAR
IS BEGIN IF ParIn< 0 THEN RETURN ‘меньше’; ELSE RETURN ‘больше’; END;
DROP FUNCTION TestReturn;
Пакеты (PACKAGE)
CREATE [OR REPLACE] PACKAGE[польз.] имя_пакета AS <cпецификации> END [имя_пакета];
CREATE [OR REPLACE] PACKAGETestPackage AS
PROCEDURE TestProc(p_ParIn IN INTEGER, p_ParOutOUT VARCHAR2);
FUNCTION TestFunc(p_Par1IN VARCHAR2) RETURN INTEGER;
ENDTestPackage;
CREATE [OR REPLACE] PACKAGE BODY имя_пакетаAS [<глобальные декларации>]
<подпрограммы>END[имя_пакета];
CREATE OR REPLACE PACKAGE BODYTestPackageAS
PROCEDURE TestProc(p_Par IN INTEGER, p_ParOutOUT VARCHAR2)
IS
BEGIN ... END TestProc;
FUNCTION TestFunc(p_Par1 IN VARCHAR2) RETURN INTEGER
IS
BEGIN RETURNLENGTH(p_Par1); ENDTestFunc;
ENDTestPackage;
Вызов процедуры пакета TestPacsage.TestProc(120, OutPar);
CREATE TABLE Test_Table (Col1 VARCHAR2(10));
CREATE OR REPLACE PACKAGE TP AS PROCEDURE TestProc(ParIn IN VARCHAR2); END TP;
CREATE OR REPLACE PACKAGE BODYTP AS PROCEDURE TestProc(ParInIN VARCHAR2)