Qual è la differenza tra "AS" e "IS" in una stored procedure Oracle?


95

Vedo procedure Oracle scritte a volte con "AS" e talvolta con la parola chiave "IS".

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

vs.

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

C'è qualche differenza tra i due?


Modifica: Apparentemente, non ci sono differenze funzionali tra i due, ma alcune persone seguono una convenzione per utilizzare "AS" quando l'SP fa parte di un pacchetto e "IS" quando non lo è. O viceversa. Meh.


1
Il 2 ° non indica sempre semplicemente un'altra procedura che implementa effettivamente la funzionalità?
Joel Coehoorn

1
Nel mio test, entrambi sembravano funzionare con lo stesso identico corpo. Non so se indicare un altro proc.
Ishmaeel

Risposte:


66

Nessuno qualunque. Sono sinonimi forniti per rendere il tuo codice più leggibile:

FUNZIONE f È ...

CREA VISTA v COME SELEZIONA ...


54

Una piccola differenza ...

Sono sinonimi di pacchetti e procedure, ma non di cursori:

Funziona ...

cursor test_cursor
is
select * from emp;

... ma questo non:

cursor test_cursor
as
select * from emp;

4
La risposta di Dileep Krishnamurthy completa questo
Imad

21

"È" e "AS" fungono da sinonimo durante la creazione di procedure e pacchetti ma non per un cursore, una tabella o una vista.


11

Ecco un'altra differenza (in 10g, in ogni caso)

Dato un tipo di oggetto sciolto:

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

È possibile creare un loosetipo di tabella di questo tipo di oggetto con ASoIS

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

Tuttavia, se crei lo stesso tipo di tabella all'interno di un pacchetto, devi utilizzare IS:

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

L'uso di ASnel pacchetto produce il seguente errore:

Errore (2,30): PLS-00103: rilevato il simbolo "TABELLA" quando si prevede una delle seguenti condizioni: oggetto opaco


1

Secondo TutorialsPoint

La parola chiave AS viene utilizzata al posto della parola chiave IS per creare una procedura autonoma.

e considerando le risposte precedenti,

suppongo

AS è per entità autonome (al di fuori di qualsiasi blocco, sottoprogramma, pacchetto)

e

IS è per entità incorporate (all'interno di un blocco, sottoprogramma o pacchetto).

.


1

La parola chiave AS viene utilizzata al posto della parola chiave IS per creare una funzione autonoma .

[Una funzione memorizzata autonoma è una funzione ( un sottoprogramma che restituisce un singolo valore ) archiviata nel database. Nota: una funzione memorizzata autonoma creata con l'istruzione CREATE FUNCTION è diversa da una funzione dichiarata e definita in un blocco o pacchetto PL / SQL. ]

Per ulteriori spiegazioni, leggi questo ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.