Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Главная » Статьи по Базам данных » Oracle - Статьи »

Обсудить на форуме Обсудить на форуме

CREATE DATABASE [database]
     [CONTROLFILE REUSE]
     [LOGFILE [GROUP integer] filespec [,
       [GROUP integer] filespec] ...]
     [MAXLOGFILES integer ] [MAXLOGMEMBERS integer] [MAXLOGHISTORY integer]
     [DATAFILE filespec [, filespec] ...]
     [MAXDATAFILES integer] [MAXINSTANCES integer]
     [ARCHIVELOG | !!under!!NOARCHIVELOG]
     [!!under!!EXCLUSIVE]
     [CHARACTER SET charset]
CREATE [PUBLIC] DATABASE LINK dblink
     [CONNECT TO user IDENTIFIED BY password]
     [USING 'dbstring']
CREATE [OR REPLACE] FUNCTION [schema.]function
     [ (argument [!!under!!IN] datatype
     [, argument [!!under!!IN] datatype] ...)]
     RETURN datatype
     {IS | AS} pl/sql_subprogram_body
CREATE INDEX [schema.]index
     ON { [schema.]table (column [!!under!!ASC|DESC]
        [, column [!!under!!ASC|DESC]] ...)
        | CLUSTER [schema.]cluster }
     [INITRANS integer] [MAXTRANS integer]
     [TABLESPACE tablespace]
     [STORAGE storage_clause]
     [PCTFREE integer]
     [NOSORT]
CREATE [OR REPLACE] PACKAGE [schema.]package
     {IS | AS} pl/sql_package_spec
CREATE [OR REPLACE] PACKAGE BODY [schema.]package
     {IS | AS} pl/sql_package_body
CREATE [OR REPLACE] PROCEDURE [schema.]procedure
     [ (argument [!!under!!IN | OUT | IN OUT] datatype
     [, argument [!!under!!IN | OUT | IN OUT] datatype] ...)]
     {IS | AS} pl/sql_subprogram_body
CREATE PROFILE profile
     LIMIT [SESSIONS_PER_USER          {integer | UNLIMITED | DEFAULT}]
           [CPU_PER_SESSION            {integer | UNLIMITED | DEFAULT}]
           [CPU_PER_CALL               {integer | UNLIMITED | DEFAULT}]
           [CONNECT_TIME               {integer | UNLIMITED | DEFAULT}]
           [IDLE_TIME                  {integer | UNLIMITED | DEFAULT}]
           [LOGICAL_READS_PER_SESSION  {integer | UNLIMITED | DEFAULT}]
           [LOGICAL_READS_PER_CALL     {integer | UNLIMITED | DEFAULT}]
           [COMPOSITE_LIMIT            {integer | UNLIMITED | DEFAULT}]
           [PRIVATE_SGA          {integer [K|M] | UNLIMITED | DEFAULT}]
CREATE ROLE role
     [ !!under!!NOT IDENTIFIED
     | IDENTIFIED {BY password | EXTERNALLY} ]
CREATE [PUBLIC] ROLLBACK SEGMENT rollback_segment
     [TABLESPACE tablespace] [STORAGE storage_clause]

                                    - 21 -
CREATE SCHEMA AUTHORIZATION schema
     { CREATE TABLE command | CREATE VIEW command | GRANT command } ...
CREATE SEQUENCE [schema.]sequence
     [INCREMENT BY integer]
     [START WITH integer]
     [MAXVALUE integer | NOMAXVALUE]
     [MINVALUE integer | !!under!!NOMINVALUE]
     [CYCLE | NOCYCLE]
     [CACHE integer | NOCACHE]
     [ORDER | !!under!!NOORDER]
CREATE SNAPSHOT [schema.]snapshot
     [ [PCTFREE  integer] [PCTUSED  integer]
       [INITRANS integer] [MAXTRANS integer]
       [TABLESPACE tablespace]
       [STORAGE storage_clause] | [CLUSTER cluster (column [, column]...) ]
     [ USING INDEX [PCTFREE integer] [INITRANS integer] [MAXTRANS integer]
       [TABLESPACE tablespace] [STORAGE storage_clause] ]
     [ REFRESH [FAST | COMPLETE | !!under!!FORCE] [START WITH date]
       [NEXT date]]
     AS subquery
CREATE SNAPSHOT LOG ON [schema.]table
     [PCTFREE  integer]  [PCTUSED  integer]
     [INITRANS integer]  [MAXTRANS integer]
     [TABLESPACE tablespace]
     [STORAGE storage_clause]
CREATE [PUBLIC] SYNONYM [schema.]synonym
     FOR [schema.]object[@dblink]
CREATE TABLE [schema.]table
      ( { column [datatype] [DEFAULT expr] [column_constraint] ...
        | table_constraint}
     [, { column [datatype] [DEFAULT expr] [column_constraint] ...
        | table_constraint} ]...)
     [ [PCTFREE  integer] [PCTUSED  integer]
       [INITRANS integer] [MAXTRANS integer]
       [TABLESPACE tablespace] [STORAGE storage_clause]
     |  CLUSTER cluster (column [, column]...) ]
     [ ENABLE   enable_clause | DISABLE disable_clause ] ...
     [AS subquery]
CREATE TABLESPACE tablespace
     DATAFILE filespec [, filespec] ...
     [DEFAULT STORAGE storage_clause] [!!under!!ONLINE | OFFLINE]
CREATE [OR REPLACE] TRIGGER [schema.]trigger
     {BEFORE | AFTER}
     {DELETE | INSERT | UPDATE [OF column [, column] ...]}
       [OR {DELETE | INSERT | UPDATE [OF column [, column] ...]}] ...
     ON [schema.]table
     [ [REFERENCING { OLD [AS] old [NEW [AS] new]
                    | NEW [AS] new [OLD [AS] old] } ]
      FOR EACH ROW
      [WHEN (condition)] ]
     pl/sql_block

                                    - 22 -
CREATE USER user
     IDENTIFIED {BY password | EXTERNALLY}
     [DEFAULT TABLESPACE tablespace]
     [TEMPORARY TABLESPACE tablespace]
     [QUOTA {integer [K|M] | UNLIMITED} ON tablespace] ...
     [PROFILE profile]
CREATE [OR REPLACE] [FORCE | !!under!!NOFORCE] VIEW [schema.]view
     [(alias [,alias]...)]
     AS subquery
     [WITH CHECK OPTION [CONSTRAINT constraint]]
     dblink database[.domain]...[@connection_qualifier]
DELETE [FROM] [schema.]{table | view}[@dblink] [alias] [WHERE condition]
DROP CLUSTER [schema.]cluster
     [INCLUDING TABLES [CASCADE CONSTRAINTS] ]
DROP [PUBLIC] DATABASE LINK dblink
DROP FUNCTION [schema.]function
DROP INDEX [schema.]index
DROP PACKAGE [BODY] [schema.]package
DROP PROCEDURE [schema.]procedure
DROP PROFILE profile [CASCADE]
DROP ROLE role
DROP ROLLBACK SEGMENT rollback_segment
DROP SEQUENCE [schema.]sequence
DROP SNAPSHOT [schema.]snapshot
DROP SNAPSHOT LOG ON [schema.]table
DROP [PUBLIC] SYNONYM [schema.]synonym
DROP TABLE [schema.]table [CASCADE CONSTRAINTS]
DROP TABLESPACE tablespace [INCLUDING CONTENTS [CASCADE CONSTRAINTS]]
DROP TRIGGER [schema.]trigger
DROP USER user [CASCADE]
DROP VIEW [schema.]view
EXPLAIN PLAN [SET STATEMENT ID = 'text'] [INTO [schema.]table[@dblink]]
                FOR statement
GRANT {system_priv | role} [, {system_priv | role}] ...
     TO {user | role | PUBLIC} [, {user | role | PUBLIC}] ...
     [WITH ADMIN OPTION]

                                    - 23 -
GRANT   {object_priv | ALL [PRIVILEGES]} [ (column [, column]...) ]
     [, {object_priv | ALL [PRIVILEGES]} [ (column [, column] ...) ] ] ...
     ON [schema.]object
     TO {user | role | PUBLIC} [, {user | role | PUBLIC}] ...
     [WITH GRANT OPTION]
INSERT INTO [schema.]{table | view}[@dblink] [ (column [, column] ...) ]
     {VALUES (expr [, expr] ...) | subquery}
LOCK TABLE [schema.]{table | view}[@dblink]
           [, [schema.]{table | view}[@dblink] ]...
     IN lockmode MODE
     [NOWAIT]
NOAUDIT {statement_opt | system_priv}
     [, {statement_opt | system_priv} ] ...
     [BY user [, user] ...]
     [WHENEVER [NOT] SUCCESSFUL]
NOAUDIT object_opt [, object_opt] ...
     ON [schema.]object
     [WHENEVER [NOT] SUCCESSFUL]
RENAME old TO new
REVOKE {system_priv | role} [, {system_priv | role}] ...
     FROM {user | role | PUBLIC}
       [, {user | role | PUBLIC}] ...
REVOKE {object_priv | ALL [PRIVILEGES]}
     [, {object_priv | ALL [PRIVILEGES]} ] ...
     ON [schema.]object
     FROM {user | role | PUBLIC} [, {user | role | PUBLIC}] ...
     [CASCADE CONSTRAINTS]
ROLLBACK [WORK]
     [ TO [SAVEPOINT] savepoint | FORCE 'text' ]
SAVEPOINT savepoint
SELECT [DISTINCT | !!under!!ALL] { *
               | { [schema.]{table | view | snapshot}.*
               | expr [ [AS] c_alias ] }
               [, { [schema.]{table | view | snapshot}.*
               | expr [ [AS] c_alias ] } ] ... }
     FROM { (subquery)
     | [schema.]{table | view | snapshot}[@dblink] } [t_alias]
       [, { (subquery)
          | [schema.]{table | view | snapshot}[@dblink] } [t_alias] ] ...
     [WHERE condition ]
     [ [START WITH condition] CONNECT BY condition]
     [GROUP BY expr [, expr] ...] [HAVING condition]
     [{UNION | UNION ALL | INTERSECT | MINUS} SELECT command ]
     [ORDER BY {expr | c_alias | position} [!!under!!ASC | DESC]
            [, {expr | c_alias | position}
             [!!under!!ASC | DESC]] ...]
     [FOR UPDATE [OF [[schema.]{table | view}.]column
                  [, [[schema.]{table | view}.]column] ...]
     [NOWAIT] ]

                                    - 24 -
SET ROLE { role [IDENTIFIED BY password]
     [, role [IDENTIFIED BY password] ] ...
     | ALL [EXCEPT role [, role] ...]
     | NONE }
SET TRANSACTION
     { READ ONLY
     | READ WRITE
     | USE ROLLBACK SEGMENT rollback_segment }
TRUNCATE {TABLE [schema.]table | CLUSTER [schema.]cluster}
     [ {!!under!!DROP | REUSE} STORAGE]
UPDATE [schema.]{table | view}[@dblink] [alias]
     SET { (column [, column] ...) = (subquery)
          |  column = { expr | (subquery) } }
      [,  { (column [, column] ...) = (subquery)
          |  column = { expr | (subquery) } } ] ...
     [WHERE condition]
   11. Фразы предложений (команд) SQL Oracle7
ARCHIVE LOG [THREAD integer]
     { { SEQ integer | CHANGE integer | CURRENT | GROUP integer
       | LOGFILE 'filename' | NEXT | ALL | START }
       [TO 'location'] | STOP }
CONSTRAINT clause
   Column constraint:
     [CONSTRAINT constraint]
     { [NOT] NULL
     | {UNIQUE | PRIMARY KEY}
     |  REFERENCES [schema.]table [(column)]
               [ON DELETE CASCADE]
     |  CHECK (condition) }
     { [ USING INDEX [PCTFREE integer]
     [INITRANS integer] [MAXTRANS integer]
     [TABLESPACE tablespace]
     [STORAGE storage_clause] ]
     [ EXCEPTIONS INTO [schema.]table
     | DISABLE }
   Table constraint:
     [CONSTRAINT constraint]
     { {UNIQUE | PRIMARY KEY} (column [,column] ...)
     |  FOREIGN KEY (column [,column] ...)
           REFERENCES [schema.]table [(column [,column] ...)]
          [ON DELETE CASCADE]
     | CHECK (condition) }
     { [ USING INDEX [PCTFREE integer]
          [INITRANS integer] [MAXTRANS integer]
          [TABLESPACE tablespace]
          [STORAGE storage_clause] ]
     [ EXCEPTIONS INTO [schema.]table[@dblink]
     | DISABLE }

                                    - 25 -
DISABLE { { UNIQUE (column [, column] ...)
         | PRIMARY KEY
         | CONSTRAINT constraint }
           [CASCADE]
         | ALL TRIGGERS }
DROP { PRIMARY KEY
     | UNIQUE (column [, column] ...)
     | CONSTRAINT constraint }
       [CASCADE]
ENABLE { {UNIQUE (column [, column] ...)
     |PRIMARY KEY
     |CONSTRAINT constraint}
       [USING INDEX [INITRANS integer]
                    [MAXTRANS integer]
                    [TABLESPACE tablespace]
                    [STORAGE storage_clause]
                    [PCTFREE integer] ]
       [EXCEPTIONS INTO [schema.]table ]
     | ALL TRIGGERS }
Filespec:  Data files:
             'filename' [SIZE integer [K|M] ] [REUSE]
           Redo log file groups:
             {  'filename'
                | ('filename' [, 'filename'] ...)}
                [SIZE integer [K|M] ] [REUSE]
RECOVER [AUTOMATIC] [FROM 'location']
     { [DATABASE] [ UNTIL CANCEL
                  | UNTIL TIME date
                  | UNTIL CHANGE integer
                  | USING BACKUP CONTROLFILE ]
     | TABLESPACE tablespace [, tablespace] ...
     | DATAFILE 'filename' [, 'filename'] ...
     | LOGFILE 'filename'
     | CONTINUE [DEFAULT]
     | CANCEL }
STORAGE ( [INITIAL          integer [K|M] ]
               [NEXT             integer [K|M] ]
          [PCTINCREASE      integer]
          [MINEXTENTS       integer]
          [MAXEXTENTS       integer]
          [OPTIMAL         {integer [K|M] | NULL}]
          [FREELIST GROUPS  integer]
          [FREELISTS        integer] )
WHERE [NOT] condition [{AND | OR} [NOT] condition ] ...

                                    - 26 -
   12. Язык PL/SQL - процедурные расширения языка SQL
   12.1. Основные конструкции языка PL/SQL
   PL/SQL - это блочно-структурированный язык. Структура блока имеет вид:
      [ DECLARE
          -- описание переменных, констант и пользовательских типов данных ]
      BEGIN
          -- тело основной программы, в которую могут вкладываться другие
          -- блоки (в них также можно вкладывать блоки и т.д.)
      [ EXCEPTION
          -- драйверы для обработки исключительных ситуаций в программе ]
      END;
   Программы PL/SQL могут быть неименовынными (анонимными блоками), но чаще
всего используются именованные программы: процедуры, функции, пакеты и триггера
(см. п. 12.7).
   12.2. Типы данных, переменные, константы и выражения
   12.2.1. Типы данных, доступные в PL/SQL
   Кроме типов данных Oracle7 (см. п. 5), PL/SQL поддерживает несколько
дополнительных типов данных и позволяет использовать в своих конструкциях
некоторые основные типы с большим диапазоном.
Тип данных     Описание
-------------- ---------------------------------------------------------------
BINARY_INTEGER Этот тип данных и его подтипы NATURAL и POSITIVE применяются для
               создания переменных и констант, которые хранят число со знаком.
               Двоичные целые числа могут принимать значения в диапазоне от -2
               в 31 степени до 2 в 31 степени минус 1.
BOOLEAN        Принимается для создания переменных и констант, в которых
               хранятся логические значения TRUE и FALSE.
CHAR           Есть подтипы CHARACTER и STRING. Максимальный размер 32767.
NUMBER         Есть подтипы DEC, DECIMAL, DOUBLE, PRECISION, FLOAT, INT,
               INTEGER, NUMERIC, REAL и SMALLINT.
RECORD         Используется для создания пользовательских типов записей базы
               данных.
TABLE          Служит для создания табличных типов данных PL/SQL.
VARCHAR2       Есть подтип VARCHAR. Максимальный размер 32767.
col%TYPE       Используется для определения типа данных столбца или переменной
               по типу данных другого столбца или переменной, к имени которого
               или которой (col) приписан суффикс %TYPE.
tab%ROWTYPE    Используется для определения типа данных записи по типу данных
               столбцов таблицы, к имени которой (tab) приписан суффикс
               %ROWTYPE.
   Рассмотрим подробнее типы данных TABLE и RECORD, позволяющие создавать
одномерные массивы и записи, широко используемые в программах PL/SQL.
   12.2.2. Таблицы PL/SQL
   Таблица PL/SQL - это одномерный массив с неограниченным числом строк. Для
объявления этого массива (таблицы PL/SQL или TABLE) необходимо сначала
определить его тип данных.

                                    - 27 -
   Для описания типа данных TABLE используется синтаксис:
      TYPE type_name IS TABLE OF { column_type | variable%TYPE |
          table.column%TYPE } [NOT NULL] INDEX BY BINARY_INTEGER;
где "type_name" - спецификатор типа, используемый в последующих объявлениях
таблиц PL/SQL, и "column_type" - любой из скалярных типов данных: CHAR, DATE или
NUMBER. С помощью атрибута %TYPE можно установить "type_name" соответствующим
типу данных какой-либо переменной (variable) или столбца (table.column).
   Имя (например, name_plsql_table), которое описывается табличным типом
данных, называется таблицей PL/SQL. Это описание, размещаемое в разделе DECLARE,
имеет вид:
      name_plsql_table  type_name;
   Ссылки на строки таблицы PL/SQL осуществляются аналогично ссылкам на элементы
одномерного массива:
      name_plsql_table(index) ,
где index принадлежит типу BINARY_INTEGER. Например, для ссылки на третью строку
в таблице PL/SQL "ename_tab" следует написать: ename_tab(3).
   Для присвоения значения конкретной строке таблицы PL/SQL используется
синтаксис:
      name_plsql_table(index) := expr;
   Для ввода в таблицу PL/SQL значений из какого-либо столбца базовой таблицы
или представления, а также для выборки значений из таблицы PL/SQL, необходимо
использовать цикл. (Примеры таких операций приведены в п. 12.4.)
   12.2.3. Записи PL/SQL
   Record PL/SQL - это совокупность полей, каждое из которых должно иметь
уникальное имя (в пределах записи). Эти поля могут принадлежать различным
типам данных.
   Если создаваемая запись (sotr) соответствует описанию столбцов какой-либо
базовой таблицы (например, kadry), то ее объявление можно осуществить в разделе
DECLARE с помощью атрибута %ROWTYPE:
        sotr kadry%ROWTYPE;
   В противном случае для объявления записи необходимо сначала определить ее
тип данных. Для описания типа данных RECORD используется синтаксис:
      TYPE type_name IS RECORD
      ( field_name1 {field_type | variable%TYPE | table.column%TYPE
             | table%ROWTYPE} [NOT NULL],
        field_name2 {field_type | variable%TYPE | table.column%TYPE
             | table%ROWTYPE} [NOT NULL],
        ...);
где "type_name" - спецификатор типа, используемый в последующих объявлениях
записей PL/SQL, и "field_type" - любой тип данных. С помощью атрибута %TYPE
можно установить "type_name" соответствующим типу данных какой-либо переменной
(variable) или столбца (table.column). Атрибут %ROWTYPE позволяет определить
поле как запись, соответствующую описанию столбцов какой-либо базовой таблицы.

                                    - 28 -
   При объявлении типа записи можно присвоить ее полям некоторые значения. Если
же для поля вводится ограничение NOT NULL (для предотвращения назначения пустых
значений), то этому полю надо обязательно присвоить значение. Например:
       TYPE SotrRecTyp IS RECORD (nomer NUMBER(4) NOT NULL := 1001,
       familiy CHAR(20), dolgnost CHAR(14), otdel NUMBER(3) := 102);
   Объявление создаваемой записи (например, name_plsql_record) производится в
разделе DECLARE и имеет вид:
          name_plsql_record  type_name;
   Ссылки на отдельные поля записи осуществляются так:
          name_plsql_record.field_name;
   Для присвоения значения конкретному полю записи используется синтаксис:
          name_plsql_record.field_name := expr;
   Примеры использования записей в программах PL/SQL приведены ниже.
   Для ввода в таблицу PL/SQL значений из какого-либо столбца базовой таблицы
или представления, а также для выборки значений из таблицы PL/SQL, необходимо
использовать цикл. (Примеры таких операций приведены в п. 12.4.)
   12.2.4. Переменные, константы и выражения
   В программах PL/SQL могут использоваться переменные и константы, описываемые
в разделе DECLARE с помощью конструкции вида:
    variable_name [CONSTANT] type_name [NOT NULL] [ { := | DEFAULT } expr ]
   Например
    birthdate  DATE;
    emp_count  SMALLINT := 0;
    emp_count  SMALLINT DEFAULT 0;
    acct_id    VARCHAR2(5) NOT NULL := 'AP001';
    pi         CONSTANT REAL := 3.14159;
    area       REAL := pi * radius**2;
    valid_id   BOOLEAN;
    valid_id   VARCHAR2(5);  -- недопустимое вторичное описание  valid_id
    i, j, k    SMALLINT;     -- нельзя описывать список; надо:
                             -- i SMALLINT; j  SMALLINT; k  SMALLINT;
    credit     REAL(7,2);
    debit      credit%TYPE;  -- тип данных аналогичный типу данных "credit"
   Синтаксис выражения описан в п. 4.3.
   12.3. Связь объектов PL/SQL с таблицами базы данных
   Чтобы программа PL/SQL могла работать с информацией, содержащейся в базах
данных, необходимо организовать обмен между значениями столбцов таблиц баз
данных и переменными PL/SQL.
   Известно, что для выбора информации из таблиц используется SQL предложение
SELECT. При его выполнении Oracle создает специальную рабочую область,
содержащую информацию о самом SELECT, данные, которые требуются для его
выполнения (например, результаты подзапросов), и, наконец, окончательный
результат выполнения SELECT. PL/SQL имеет несколько механизмов доступа к

                                    - 29 -
этой рабочей области. Одним из них является курсор, с помощью которого можно
присвоить имя этой рабочей области и манипулировать содержащейся в ней
информацией, последовательно выбирая строки результата и пересылая значения
столбцов текущей строки в переменные PL/SQL. Существуют и другие механизмы,
не требующее создания явного курсора.
   12.3.1. Явный курсор
   Курсор - это средство языка SQL, позволяющее с помощью команд OPEN, FETCH и
CLOSE получить построчный доступ к результату запроса к базе данных. (Будем
также называть курсором и сам набор строк, полученный в результате выполнения
запроса.)
   Для использования курсора его надо сначала объявить, т.е. дать ему имя и
указать (с помощью предложения SELECT), какие столбцы и строки базовых таблиц
должны быть помещены в набор строк, названный этим именем. Команда OPEN
инициализирует получение указанного набора и установку перед первой его строкой
указателя текущей строки. Команда FETCH служит для установки указателя текущей
строки на следующую запись (первый раз на строку с номером 1) и выборки из
текущей строки курсора значений указанных столбцов с пересылкой их в переменные
PL/SQL. (Выполнением FETCH в цикле можно последовательно выбрать информацию из
всех строк курсора.) Наконец, команда CLOSE позволяет закрыть (удалить из
памяти) набор строк (при этом описание курсора сохраняется и его можно снова
открыть командой OPEN).
   Существует модификация ("Курсор в цикле FOR"), позволяющая организовать
последовательный выбор строк объявленного курсора без явного использования
команд OPEN, FETCH и CLOSE.
   12.3.1.1. Объявление курсора
   Перед работой с курсором его следует объявить в разделе DECLARE или другом
допустимом разделе, используя синтаксис:
  CURSOR cursor_name [ (parameter [, parameter, ... ] ) ] IS SELECT ...  ,
где
   cursor_name - имя курсора;
   SELECT ...  - предложение SELECT, определяющее строки курсора;
   parametr    - имеет следующий синтаксис:
      variable_name [IN] type_name [ { := | DEFAULT } value ]  ,
а type_name - любой тип (подтип) данных PL/SQL без указания ограничений
(например, длины символьных значений).
   Формальные параметры курсора используются только для передачи значений в
WHERE фразу предложения SELECT с целью отбора нужных строк запроса. Передача
таких значений производится во время открытия курсора командой OPEN. Если
значения формальных параметров отсутствуют в команде OPEN и не заданы по
умолчанию (:= value или DEFAULT value), то выдается ошибка. При наличии тех и
других используются параметры из команды OPEN.
   В следующем примере использованы оба способа задания значений по умолчанию
параметрам курсора:
DECLARE
CURSOR s1 (otd INTEGER := 102, grup VARCHAR2 DEFAULT 'Преподаватели',
           tdat DATE := '1.1.1996') IS
  SELECT (TO_CHAR(razr)||' '||imya_dolg) razr_dolg, stavka
    FROM shtat x, dolgnosti y, grup_dolg z
   WHERE x.dolgn = y.dolgn  AND y.grup_dolg = z.grup_dolg  AND otdel = otd
     AND tdat BETWEEN nachalo AND konec  AND imya_grup_dolg = grup
   ORDER BY razr_dolg DESC;

Может пригодится:


Автор:
Прочитано: 7422
Рейтинг:
Оценить: 1 2 3 4 5

Комментарии: (0)

Добавить комментарий
Ваше имя*:
Ваш email:
URL Вашего сайта:
Ваш комментарий*:
Код безопастности*:

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру