89 votes

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

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

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

vs.

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 qui consiste à utiliser "AS" lorsque le SP fait partie d'un paquet et "IS" lorsqu'il n'en fait pas partie. Ou l'inverse. Meh.

62voto

Tony Andrews Points 67363

Pas du tout. Ce sont des synonymes fournis pour rendre votre code plus lisible :

FONCTION f EST ...

CREATE VIEW v AS SELECT ...

52voto

Nick Pierpoint Points 7976

Une petite différence...

Ils sont synonymes de paquets et de procédures, mais pas de curseurs :

Ça marche...

cursor test_cursor
is
select * from emp;

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

cursor test_cursor
as
select * from emp;

19voto

"IS" et "AS" agissent comme des synonymes lors de la création de procédures et de paquets mais pas pour un curseur ou une table.

11voto

StuartLC Points 35534

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

Étant donné un type d'objet libre :

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

Vous pouvez créer un loose Type de table de ce type d'objet avec soit AS ou IS

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

Toutefois, si vous créez ce même type de table au sein d'un package, vous devez utiliser la fonction IS :

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

Utilisation de AS dans le paquet donne lieu à l'erreur suivante :

Erreur(2,30) : PLS-00103 : A rencontré le symbole "TABLE" alors qu'il attendait l'un des éléments suivants : objet opaque

-3voto

srinivasan Points 9

Le site AS La clause copie la contrainte tandis que la clause IS La clause ne copie pas les contraintes des tables de base. C'est la principale différence.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X