В чем разница между "AS" и "IS" в хранимой процедуре Oracle?

Я вижу процедуры Oracle, иногда написанные с помощью "AS", а иногда с ключевым словом "IS".

CREATE OR REPLACE Procedure TESTUSER.KILLINSTANCE (INSTANCEID integer) **AS**
...

против.

CREATE OR REPLACE Procedure TESTUSER.KILLINSTANCE (INSTANCEID integer) **IS**
...

Есть ли разница между двумя?


Edit: По-видимому, нет никакой функциональной разницы между ними, но некоторые люди следуют за соглашением использовать AS, когда SP является частью пакета и "IS", когда это не так. Или наоборот. Мех.

Ответ 1

Ничего. Они представляют собой синонимы, чтобы сделать ваш код более читаемым:

ФУНКЦИЯ f IS...

CREATE VIEW v AS SELECT...

Ответ 2

Одно незначительное отличие...

Они являются синонимами для пакетов и процедур, но не для курсоров:

Это работает...

cursor test_cursor
is
select * from emp;

... но это не так:

cursor test_cursor
as
select * from emp;

Ответ 3

"IS" и "AS" действуют как синоним при создании процедур и пакетов, но не для курсора, таблицы или представления.

Ответ 4

Здесь другая разница (в 10g, во всяком случае)

Для типа свободного объекта:

CREATE TYPE someRecordType AS OBJECT
(
   SomeCol VARCHAR2(12 BYTE)
);

Вы можете создать тип таблицы loose для этого типа объекта с помощью AS или IS

CREATE OR REPLACE TYPE someTableType
        IS {or AS} TABLE OF someRecordType;

Однако, если вы создаете тот же тип таблицы внутри пакета, вы должны использовать IS:

CREATE OR REPLACE PACKAGE SomePackage IS
    TYPE packageTableType IS TABLE OF someRecordType;
END SomePackage;

Использование AS в пакете приводит к следующей ошибке:

Ошибка (2,30): PLS-00103: встречается символ "ТАБЛИЦА", ожидая одно из следующего: объект непрозрачный