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

75

Я вижу процедуры 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", когда это не так. Или наоборот. Мех.
  • 0
    Разве 2-й всегда не будет просто указывать на другую процедуру, которая фактически реализует функциональность?
  • 0
    В моем тесте оба, казалось, работали с точно таким же телом. Не знаю о том, чтобы указать на другой процесс.
Теги:
stored-procedures
keyword

4 ответа

53
Лучший ответ

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

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

CREATE VIEW v AS SELECT...

47

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

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

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

cursor test_cursor
is
select * from emp;

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

cursor test_cursor
as
select * from emp;
  • 4
    Ответ Дилипа Кришнамурти завершает это
14

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

9

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню