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

96

Я вижу, что процедуры Oracle иногда пишутся с ключевым словом «AS», а иногда с ключевым словом «IS».

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

vs.

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

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


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

Измаил
источник
1
Разве второй не всегда просто указывает на другую процедуру, которая фактически реализует эту функциональность?
Джоэл Кохорн
1
В моем тесте оба работали с одним и тем же телом. Не знаю, как указать на другую процедуру.
Ishmaeel

Ответы:

67

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

ФУНКЦИЯ f ЕСТЬ ...

СОЗДАТЬ ПРОСМОТР v КАК ВЫБРАТЬ ...

Тони Эндрюс
источник
56

Одно небольшое отличие ...

Это синонимы пакетов и процедур, но не курсоров:

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

cursor test_cursor
is
select * from emp;

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

cursor test_cursor
as
select * from emp;
Ник Пьерпойнт
источник
4
Ответ Дилипа Кришнамурти завершает это
Имад
22

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

Дилип Кришнамурти
источник
11

Вот еще одно отличие (во всяком случае, в 10гр)

Учитывая свободный тип объекта:

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: обнаружен символ «ТАБЛИЦА» при ожидании одного из следующих событий: объект непрозрачен.

StuartLC
источник
1

Согласно TutorialsPoint

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

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

Похоже

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

а также

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

.

Даниэль Шандор
источник
1

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

[ Автономная сохраненная функция - это функция ( подпрограмма, возвращающая одно значение ), которая хранится в базе данных. Примечание. Автономная сохраненная функция, которую вы создаете с помощью оператора CREATE FUNCTION, отличается от функции, которую вы объявляете и определяете в блоке или пакете PL / SQL. ]

Чтобы узнать больше, прочтите это ...

Панкадж Шивалкар
источник