Oracle saklı yordamında "AS" ve "IS" arasındaki fark nedir?


98

Oracle prosedürlerinin bazen "AS" ve bazen "IS" anahtar kelimesi ile yazıldığını görüyorum.

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

vs.

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

İkisi arasında herhangi bir fark var mı?


Düzenleme: Görünüşe göre, ikisi arasında işlevsel bir fark yok, ancak bazı insanlar, SP bir paketin parçası olduğunda "AS", olmadığında "IS" kullanmak için bir kural izliyor. Ya da tam tersi. Meh.


1
2'nci her zaman basitçe işlevselliği gerçekten uygulayan başka bir prosedüre işaret etmez mi?
Joel Coehoorn

1
Benim testimde ikisi de aynı vücutla çalışıyor gibiydi. Dunno, başka bir proc.
Ishmaeel

Yanıtlar:


68

Hiç yok. Kodunuzu daha okunaklı hale getirmek için sağlanan eşanlamlılardır:

FONKSİYON f IS ...

GÖRÜNÜM OLUŞTUR v SEÇİNİZ ...


57

Küçük bir fark ...

Paketler ve prosedürler için eşanlamlıdırlar, ancak imleçler için değiller:

Bu çalışıyor...

cursor test_cursor
is
select * from emp;

... ama bu değil:

cursor test_cursor
as
select * from emp;

4
Dileep Krishnamurthy'nin cevabı bunu tamamlıyor
Imad

24

"IS" ve "AS", prosedürler ve paketler oluştururken eşanlamlı olarak hareket eder, ancak bir imleç, tablo veya görünüm için değil.


11

İşte başka bir fark (her halükarda 10g cinsinden)

Gevşek bir nesne türü verildiğinde:

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

Bir oluşturabilir looseile bu nesne türü Tablo türünü ya ASyaIS

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

Ancak, aynı tablo türünü bir pakette oluşturursanız, şunları kullanmanız gerekir IS:

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

ASPakette kullanımı aşağıdaki hatayı verir:

Hata (2,30): PLS-00103: Aşağıdakilerden birini beklerken "TABLE" simgesiyle karşılaştı: nesne opak


2

TutorialsPoint'e göre

Bağımsız bir prosedür oluşturmak için IS anahtar sözcüğü yerine AS anahtar sözcüğü kullanılır.

ve önceki cevapları dikkate alarak,

sanırım

AS bağımsız (herhangi bir blok, alt program, paket dışında) varlıklar içindir

ve

IS gömülü (bir blok, alt program veya paket içinde) varlıklar içindir.

.


1

AS anahtar kelime yerine kullanılır IS bir oluşturmak için anahtar kelime başına fonksiyonunu .

[ Bağımsız bir depolanan işlev, veritabanında depolanan bir işlevdir ( tek bir değer döndüren bir alt program ). Not: CREATE FUNCTION deyimiyle oluşturduğunuz bağımsız bir depolanmış işlev, bir PL / SQL bloğu veya paketinde tanımladığınız ve tanımladığınız bir işlevden farklıdır . ]

Daha fazla açıklama için bunu okuyun ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.