Qual è la differenza tra “AS” e “IS” in una procedura memorizzata Oracle?

A volte vedo le procedure Oracle scritte 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 c’è alcuna differenza funzionale tra i due, ma alcune persone seguono una convenzione per usare “AS” quando l’SP fa parte di un pacchetto e “IS” quando non lo è. O viceversa. Meh.

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

FUNZIONE f IS …

CREATE VIEW v COME SELEZIONA …

Una piccola differenza …

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

Questo funziona …

 cursor test_cursor is select * from emp; 

… ma questo non:

 cursor test_cursor as select * from emp; 

“IS” e “AS” agiscono come sinonimo durante la creazione di procedure e pacchetti ma non per un cursore, una tabella o una vista.

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

Dato un tipo di object libero:

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

È ansible creare un tipo di tabella loose di questo tipo di object con AS o IS

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

Tuttavia, se si crea lo stesso tipo di tabella all’interno di un pacchetto, è necessario utilizzare IS :

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

L’utilizzo di AS nel pacchetto restituisce il seguente errore:

Errore (2,30): PLS-00103: incontrato il simbolo “TABLE” quando si aspettava una delle seguenti condizioni: object opaco

Secondo TutorialsPoint

La parola chiave AS viene utilizzata al posto della parola chiave IS per la creazione di una procedura autonoma.

e considerando le risposte precedenti,

suppongo

AS è per entity framework indipendenti (al di fuori di qualsiasi blocco, sottoprogramma, pacchetto)

e

IS è per entity framework incorporate (all’interno di un blocco, sottoprogramma o pacchetto).

.

La parola chiave AS viene utilizzata al posto della parola chiave IS per la creazione di una funzione autonoma .

[Una funzione memorizzata autonoma è una funzione ( un sottoprogramma che restituisce un singolo valore ) che è memorizzata 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 …