У чому різниця між “AS” та “IS” у збереженій процедурі Oracle?


95

Я бачу процедури Oracle, іноді написані з "AS", а іноді з ключовим словом "IS".

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

проти

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

Чи є якась різниця між ними?


Редагувати: Очевидно, між ними немає функціональної різниці, але деякі люди дотримуються домовленості про використання "AS", коли SP є частиною пакету, і "IS", коли це не так. Або навпаки. Ме


1
Чи не завжди другий завжди просто вказує на іншу процедуру, яка насправді реалізує функціонал?
Joel Coehoorn

1
У моєму тесті, здавалося, обидва працювали з абсолютно однаковим тілом. Не знаю про вказівку на інший процес
Ізмаїл

Відповіді:


66

Жодного. Вони є синонімами, щоб зробити ваш код більш читабельним:

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

СТВОРИТИ ПЕРЕГЛЯД v ЯК ВИБЕРИТИ ...


54

Одна незначна різниця ...

Вони є синонімами пакунків та процедур, але не курсорів:

Це працює ...

cursor test_cursor
is
select * from emp;

... але це не так:

cursor test_cursor
as
select * from emp;

4
Відповідь Діліпа Крішнамурті завершує це
Імад,

21

"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: Зустрічається символ "ТАБЛИЦЯ", коли очікується одне з наступного: об'єкт непрозорий


1

Відповідно до TutorialsPoint

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

та враховуючи попередні відповіді,

я вважаю

AS призначений для окремих (поза будь-яким блоком, підпрограмою, пакетом) об’єктів

і

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

.


1

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

[ Автономна збережена функція - це функція ( підпрограма, яка повертає одне значення ), яка зберігається в базі даних. Примітка: Автономна збережена функція, яку ви створюєте за допомогою оператора CREATE FUNCTION, відрізняється від функції, яку ви оголошуєте та визначаєте в блоці або пакеті PL / SQL. ]

Щоб отримати додаткові пояснення, прочитайте це ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.