В чем разница между "AS" и "IS" в хранимой процедуре Oracle? - PullRequest
86 голосов
/ 23 октября 2008

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

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

против

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

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


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

Ответы [ 6 ]

58 голосов
/ 23 октября 2008

Нет вообще. Это синонимы, которые делают ваш код более читабельным:

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

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

51 голосов
/ 27 октября 2008

Одна небольшая разница ...

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

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

cursor test_cursor
is
select * from emp;

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

cursor test_cursor
as
select * from emp;
18 голосов
/ 18 июня 2014

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

11 голосов
/ 15 апреля 2014

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

2 голосов
/ 21 июня 2018

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

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

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

2 голосов
/ 19 марта 2018

Согласно TutorialsPoint

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

и с учетом предыдущих ответов

Я думаю,

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

и

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

.

...