web-dev-qa-db-ja.com

Oracleストアドプロシージャの「AS」と「IS」の違いは何ですか?

Oracleプロシージャは、「AS」で記述されていることもあれば、「IS」キーワードで記述されていることもあります。

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

vs.

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

2つの間に違いはありますか?


87
Ishmaeel

何もありません。これらは、コードを読みやすくするために提供される同義語です。

関数f IS ...

CREATE VIEW v AS SELECT ...

60
Tony Andrews

1つの小さな違い...

これらはパッケージとプロシージャの同義語ですが、カーソルの同義語ではありません。

これは動作します...

cursor test_cursor
is
select * from emp;

...しかし、これはしません:

cursor test_cursor
as
select * from emp;
52
Nick Pierpoint

「IS」と「AS」は、プロシージャとパッケージを作成する際の同義語として機能しますが、カーソル、テーブル、またはビュー用ではありません。

19

ここに別の違いがあります(とにかく10gで)

ゆるいオブジェクトタイプがある場合:

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

looseまたはASのいずれかを使用して、このオブジェクトタイプのISテーブルタイプを作成できます。

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

ただし、パッケージ内にこの同じテーブルタイプを作成する場合は、ISを使用する必要があります。

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

パッケージでASを使用すると、次のエラーが発生します。

エラー(2,30):PLS-00103:次のいずれかを予期しているときに、シンボル "TABLE"が見つかりました:object opaque

11
StuartLC

[〜#〜] as [〜#〜]キーワードは、[〜#〜] is [〜#〜]スタンドアロン関数を作成するためのキーワード

[standaloneストアド関数は、データベースに格納される関数(単一の値を返すサブプログラム)です。注:CREATE FUNCTIONステートメントを使用して作成するスタンドアロンのストアド関数は、PL/SQLブロックまたはパッケージで宣言および定義する関数とはdifferentです。 ]

詳細については、 これを読む ...

2

TutorialsPoint による

スタンドアロンプ​​ロシージャを作成するには、ISキーワードの代わりにASキーワードを使用します。

以前の回答を考慮して、

私は推測する

ASはスタンドアロン(ブロック、サブプログラム、パッケージの外部)エンティティ用です

そして

ISは、埋め込み(ブロック、サブプログラム、またはパッケージ内)エンティティ用です。

2
Dániel Sándor