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

Я вижу процедуры в Oracle иногда пишется с "А", а иногда "это" ключевое слово.

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

и

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

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


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

6 ответов


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

функция f есть ...

создать представление v как SELECT ...


небольшое различие...

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

это работает...

cursor test_cursor
is
select * from emp;

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

cursor test_cursor
as
select * from emp;

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


вот еще одна разница (в 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: встреченный символ "Таблица" при ожидании одного из следующих: object opaque


по данным TutorialsPoint

ключевое слово AS используется вместо ключевого слова IS для создания отдельная процедура.

и учитывая предыдущие ответы,

Я думаю

AS для автономных (вне любого блока, подпрограммы, пакета) объектов

и

IS для встроенных (в блоке, подпрограмме или пакете) сущностей.

.


на AS ключевое слово используется вместо IS ключевое слово для создания отдельной функции.

[ A автономной сохраненная функция является функцией (подпрограмма, которая возвращает одно значение), которая хранится в базе данных. Примечание: автономное хранимые функции, которые можно создать с помощью инструкции create функция разные из функции, которую вы объявляете и определяете в блоке PL/SQL или пакет. ]

для более подробного объяснения, читать это...