Apa perbedaan antara "AS" dan "IS" dalam prosedur tersimpan Oracle?

95

Saya melihat prosedur Oracle terkadang ditulis dengan "AS", dan terkadang dengan kata kunci "IS".

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

vs.

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

Apakah ada perbedaan diantara keduanya?


Sunting: Rupanya, tidak ada perbedaan fungsional antara keduanya, tetapi beberapa orang mengikuti konvensi untuk menggunakan "AS" saat SP adalah bagian dari paket dan "IS" jika bukan. Atau sebaliknya. Meh.

Ishmaeel
sumber
1
Bukankah yang kedua selalu menunjuk ke prosedur lain yang benar-benar mengimplementasikan fungsionalitas?
Joel Coehoorn
1
Dalam pengujian saya, keduanya tampaknya bekerja dengan tubuh yang persis sama. Entah tentang menunjuk ke pro lain.
Ishmaeel

Jawaban:

66

Tidak ada apapun. Mereka adalah sinonim yang diberikan agar kode Anda lebih mudah dibaca:

FUNGSI f IS ...

BUAT TAMPILAN v SEBAGAI PILIH ...

Tony Andrews
sumber
54

Satu perbedaan kecil ...

Mereka adalah sinonim untuk paket dan prosedur, tetapi tidak untuk kursor:

Ini bekerja...

cursor test_cursor
is
select * from emp;

... tapi ini tidak:

cursor test_cursor
as
select * from emp;
Nick Pierpoint
sumber
4
Jawaban Dileep Krishnamurthy melengkapi ini
Imad
21

"IS" dan "AS" bertindak sebagai sinonim saat membuat prosedur dan paket, tetapi tidak untuk kursor, tabel, atau tampilan.

Dileep Krishnamurthy
sumber
11

Inilah perbedaan lainnya (dalam 10g, bagaimanapun juga)

Diberikan tipe objek longgar:

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

Anda dapat membuat loosetipe Tabel dari tipe objek ini dengan ASatauIS

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

Namun, jika Anda membuat tipe tabel yang sama dalam sebuah paket, Anda harus menggunakan IS:

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

Penggunaan ASdalam paket menghasilkan kesalahan berikut:

Kesalahan (2,30): PLS-00103: Menemukan simbol "TABLE" saat mengharapkan salah satu dari berikut: objek buram

StuartLC
sumber
1

Menurut TutorialsPoint

Kata kunci AS digunakan sebagai pengganti kata kunci IS untuk membuat prosedur mandiri.

dan mempertimbangkan jawaban sebelumnya,

saya kira

AS adalah untuk entitas yang berdiri sendiri (di luar blok, subprogram, paket) entitas apa pun

dan

IS adalah untuk entitas tertanam (dalam blok, subprogram atau paket).

.

Dániel Sándor
sumber
1

Kata kunci AS digunakan sebagai pengganti kata kunci IS untuk membuat fungsi mandiri .

[ Fungsi tersimpan mandiri adalah fungsi ( subprogram yang mengembalikan nilai tunggal ) yang disimpan dalam database. Catatan: Fungsi tersimpan mandiri yang Anda buat dengan pernyataan CREATE FUNCTION berbeda dari fungsi yang Anda deklarasikan dan tentukan dalam blok atau paket PL / SQL. ]

Untuk penjelasan lebih lanjut, baca ini ...

Pankaj Shivalkar
sumber