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;