Qual é a diferença entre “AS” e “IS” em um procedimento armazenado Oracle?


95

Vejo procedimentos Oracle algumas vezes escritos com "AS" e outras vezes com a palavra-chave "IS".

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

vs.

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

Existe alguma diferença entre os dois?


Edit: Aparentemente, não há diferença funcional entre os dois, mas algumas pessoas seguem uma convenção para usar "AS" quando o SP faz parte de um pacote e "IS" quando não é. Ou do outro modo. Meh.


1
O segundo não iria simplesmente apontar para outro procedimento que realmente implementa a funcionalidade?
Joel Coehoorn

1
No meu teste, ambos pareciam funcionar exatamente com o mesmo corpo. Não sei como apontar para outro proc.
Ishmaeel

Respostas:


66

Absolutamente nada. Eles são sinônimos fornecidos para tornar seu código mais legível:

FUNÇÃO f IS ...

CREATE VIEW v AS SELECT ...


54

Uma pequena diferença ...

Eles são sinônimos de pacotes e procedimentos, mas não de cursores:

Isso funciona...

cursor test_cursor
is
select * from emp;

... mas isso não:

cursor test_cursor
as
select * from emp;

4
A resposta de Dileep Krishnamurthy completa isso
Imad

21

"IS" e "AS" atuam como sinônimos ao criar procedimentos e pacotes, mas não para um cursor, tabela ou visão.


11

Aqui está outra diferença (em 10g, pelo menos)

Dado um tipo de objeto solto:

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

Você pode criar um loosetipo de Tabela deste tipo de objeto com ASouIS

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

No entanto, se você criar esse mesmo tipo de tabela em um pacote, deverá usar IS:

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

O uso de ASno pacote produz o seguinte erro:

Erro (2,30): PLS-00103: Encontrado o símbolo "TABELA" ao esperar um dos seguintes: objeto opaco


1

De acordo com TutorialsPoint

A palavra-chave AS é usada em vez da palavra-chave IS para criar um procedimento autônomo.

e considerando as respostas anteriores,

eu acho

AS é para entidades autônomas (fora de qualquer bloco, subprograma, pacote)

e

IS é para entidades embutidas (dentro de um bloco, subprograma ou pacote).

.


1

A palavra-chave AS é usada em vez da palavra-chave IS para criar uma função autônoma .

[Uma função armazenada autônoma é uma função ( um subprograma que retorna um único valor ) que é armazenada no banco de dados. Nota: Uma função armazenada independente que você cria com a instrução CREATE FUNCTION é diferente de uma função que você declara e define em um bloco ou pacote PL / SQL. ]

Para obter mais explicações, leia isto ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.