Quelle est la différence entre «AS» et «IS» dans une procédure stockée Oracle?

95

Je vois des procédures Oracle parfois écrites avec "AS", et parfois avec le mot clé "IS".

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

contre.

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

Y a-t-il une différence entre les deux?


Edit: Apparemment, il n'y a pas de différence fonctionnelle entre les deux, mais certaines personnes suivent une convention pour utiliser "AS" lorsque le SP fait partie d'un package et "IS" quand ce n'est pas le cas. Ou l'inverse. Meh.

Ismaël
la source
1
Le 2ème ne pointerait-il pas toujours simplement vers une autre procédure implémentant réellement la fonctionnalité?
Joel Coehoorn
1
Dans mon test, les deux semblaient travailler avec exactement le même corps. Je ne sais pas pointer vers un autre proc.
Ishmaeel

Réponses:

66

Aucun quoi que ce soit. Ce sont des synonymes fournis pour rendre votre code plus lisible:

FONCTION f IS ...

CRÉER VUE V COMME SÉLECTIONNER ...

Tony Andrews
la source
54

Une petite différence ...

Ce sont des synonymes de packages et de procédures, mais pas de curseurs:

Cela marche...

cursor test_cursor
is
select * from emp;

... mais ce n'est pas le cas:

cursor test_cursor
as
select * from emp;
Nick Pierpoint
la source
4
La réponse de Dileep Krishnamurthy complète ceci
Imad
21

"IS" et "AS" agissent comme un synonyme lors de la création de procédures et de packages mais pas pour un curseur, une table ou une vue.

Dileep Krishnamurthy
la source
11

Voici une autre différence (en 10g, en tout cas)

Étant donné un type d'objet lâche:

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

Vous pouvez créer un loosetype de table de ce type d'objet avec ASouIS

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

Cependant, si vous créez ce même type de table dans un package, vous devez utiliser IS:

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

L'utilisation de ASdans le package génère l'erreur suivante:

Erreur (2,30): PLS-00103: Le symbole "TABLE" a été rencontré lors de l'attente de l'un des éléments suivants: objet opaque

StuartLC
la source
1

Selon TutorialsPoint

Le mot clé AS est utilisé à la place du mot clé IS pour créer une procédure autonome.

et compte tenu des réponses précédentes,

j'imagine

AS est pour les entités autonomes (en dehors de tout bloc, sous-programme, package)

et

IS est destiné aux entités intégrées (dans un bloc, un sous-programme ou un package).

.

Dániel Sándor
la source
1

Le mot clé AS est utilisé à la place du mot clé IS pour créer une fonction autonome .

[Une fonction stockée autonome est une fonction ( un sous-programme qui renvoie une valeur unique ) qui est stockée dans la base de données. Remarque: Une fonction stockée autonome que vous créez avec l'instruction CREATE FUNCTION est différente d'une fonction que vous déclarez et définissez dans un bloc ou un package PL / SQL. ]

Pour plus d'explications, lisez ceci ...

Pankaj Shivalkar
la source