stored sintaxis que examples example all 11g oracle stored-procedures keyword

que - stored procedure oracle sintaxis



¿Cuál es la diferencia entre "AS" e "IS" en un procedimiento almacenado de Oracle? (5)

Veo los procedimientos de Oracle a veces escritos con "AS", y algunas veces con la palabra clave "IS".

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

vs.

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

¿Hay alguna diferencia entre los dos?

Editar: Aparentemente, no hay diferencia funcional entre los dos, pero algunas personas siguen una convención para usar "AS" cuando el SP es parte de un paquete y "IS" cuando no lo es. O de otra forma. Meh.

"IS" y "AS" actúan como sinónimos al crear procedimientos y paquetes, pero no para un cursor, tabla o vista.


Aquí hay otra diferencia (en 10g, de todos modos)

Dado un tipo de objeto suelto:

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

Puede crear un tipo de tabla loose de este tipo de objeto con AS o IS

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

Sin embargo, si crea este mismo tipo de tabla dentro de un paquete, debe usar IS :

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

El uso de AS en el paquete produce el siguiente error:

Error (2,30): PLS-00103: Encontró el símbolo "TABLE" cuando esperaba uno de los siguientes: objeto opaco


De acuerdo con TutorialsPoint

La palabra clave AS se usa en lugar de la palabra clave IS para crear un procedimiento independiente.

y considerando respuestas anteriores,

supongo

AS es para entidades independientes (fuera de cualquier bloque, subprograma, paquete)

y

IS es para entidades integradas (dentro de un bloque, subprograma o paquete).

.


Ninguna otra cosa. Son sinónimos proporcionados para que su código sea más legible:

FUNCIÓN f IS ...

CREAR VISTA v COMO SELECCIONAR ...


Una pequeña diferencia ...

Son sinónimos de paquetes y procedimientos, pero no de cursores:

Esto funciona...

cursor test_cursor is select * from emp;

... pero esto no:

cursor test_cursor as select * from emp;