Jaka jest różnica między „AS” i „IS” w procedurze składowanej Oracle?


96

Widzę procedury Oracle czasami napisane ze słowem kluczowym „AS”, a czasami ze słowem kluczowym „IS”.

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

vs.

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

Czy jest jakaś różnica między tymi dwoma?


Edycja: Wygląda na to, że nie ma między nimi różnicy funkcjonalnej, ale niektórzy ludzie przestrzegają konwencji używania „AS”, gdy SP jest częścią pakietu i „IS”, gdy nie jest. Albo na odwrót. Meh.


1
Czy druga nie zawsze wskazywałaby na inną procedurę, która faktycznie implementuje tę funkcjonalność?
Joel Coehoorn

1
W moim teście oba wydawały się działać z dokładnie tym samym ciałem. Nie wiem o wskazaniu innego proca.
Ishmaeel

Odpowiedzi:


67

Żadnych, co więcej. Są to synonimy dostarczone, aby uczynić twój kod bardziej czytelnym:

FUNKCJA F IS ...

UTWÓRZ WIDOK V JAKO WYBIERZ ...


55

Jedna drobna różnica ...

Są synonimami pakietów i procedur, ale nie kursorów:

To działa...

cursor test_cursor
is
select * from emp;

... ale to nie:

cursor test_cursor
as
select * from emp;

4
Odpowiedź Dileepa Krishnamurthy'ego kończy to
Imad

21

„IS” i „AS” działają jako synonimy podczas tworzenia procedur i pakietów, ale nie dla kursora, tabeli lub widoku.


11

Oto kolejna różnica (w każdym razie w 10 g)

Biorąc pod uwagę luźny typ obiektu:

CREATE TYPE someRecordType AS OBJECT
(
   SomeCol VARCHAR2(12 BYTE)
);

looseTyp tabeli tego typu obiektu można utworzyć za pomocą ASlubIS

CREATE OR REPLACE TYPE someTableType
        IS {or AS} TABLE OF someRecordType;

Jeśli jednak utworzysz ten sam typ tabeli w pakiecie, musisz użyć IS:

CREATE OR REPLACE PACKAGE SomePackage IS
    TYPE packageTableType IS TABLE OF someRecordType;
END SomePackage;

Użycie ASw pakiecie powoduje następujący błąd:

Błąd (2,30): PLS-00103: Napotkano symbol „TABELA”, gdy oczekiwano jednej z następujących sytuacji: obiekt nieprzezroczysty


1

Według TutorialsPoint

Słowo kluczowe AS jest używane zamiast słowa kluczowego IS do tworzenia samodzielnej procedury.

i biorąc pod uwagę poprzednie odpowiedzi,

zgaduję

AS jest dla jednostek samodzielnych (poza jakimkolwiek blokiem, podprogramem, pakietem)

i

IS dotyczy jednostek osadzonych (w bloku, podprogramie lub pakiecie).

.


1

AS parametr jest używany zamiast IS słów kluczowych dla tworzenia funkcji autonomicznego .

[ Samodzielna funkcja przechowywana to funkcja ( podprogram, który zwraca pojedynczą wartość ), która jest przechowywana w bazie danych. Uwaga: Samodzielna funkcja przechowywana, którą tworzysz za pomocą instrukcji CREATE FUNCTION różni się od funkcji, którą deklarujesz i definiujesz w bloku lub pakiecie PL / SQL. ]

Aby uzyskać więcej informacji, przeczytaj to ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.