101

我看到 Oracle 程序有时用“AS”编写,有时用“IS”关键字编写。

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

对比

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

两者有什么区别吗?


编辑:显然,两者在功能上没有区别,但是有些人遵循约定,当 SP 是包的一部分时使用“AS”,而不是包时使用“IS”。或者反过来。嗯。

4

6 回答 6

70

什么都没有。它们是为使您的代码更具可读性而提供的同义词:

功能 f 是...

创建视图 v AS SELECT ...

于 2008-10-23T16:18:46.597 回答
57

一个细微的差别...

它们是包和过程的同义词,但不是游标:

这有效...

cursor test_cursor
is
select * from emp;

...但这不会:

cursor test_cursor
as
select * from emp;
于 2008-10-27T07:10:24.560 回答
24

“IS”和“AS”在创建过程和包时充当同义词,但不适用于游标、表或视图。

于 2014-06-18T10:07:36.650 回答
12

这是另一个区别(至少 10 克)

给定一个松散的对象类型:

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

您可以使用或创建loose此对象类型的表类型ASIS

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”:对象不透明

于 2014-04-15T11:43:40.223 回答
2

根据TutorialsPoint

使用 AS 关键字代替 IS 关键字来创建独立过程。

并考虑到以前的答案,

我猜

AS用于独立(在任何块、子程序、包之外)实体

IS用于嵌入(在块、子程序或包中)实体。

.

于 2018-03-19T18:13:01.503 回答
1

使用AS关键字代替IS关键字来创建独立函数

[独立存储函数是存储在数据库中的函数(返回单个值的子程序)。注意:您使用 CREATE FUNCTION 语句创建的独立存储函数不同于您在 PL/SQL 块或包中声明和定义的函数。]

有关更多说明,请阅读此...

于 2018-06-21T06:15:22.343 回答