Oracle存储过程中“AS”和“IS”之间有什么区别?

时间:2008-10-23 16:11:12

标签: oracle stored-procedures keyword

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

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

VS

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

两者之间有什么区别吗?

<小时/> 编辑:显然,两者之间没有功能差异,但有些人遵循惯例,当SP是包的一部分时使用“AS”,而当它不是时,则使用“IS”。或者反过来说。 MEH。

6 个答案:

答案 0 :(得分:57)

无论如何。它们是提供的同义词,使您的代码更具可读性:

功能f IS ...

按选择创建视图...

答案 1 :(得分:51)

一个小的差异......

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

这有效......

cursor test_cursor
is
select * from emp;

......但这不是:

cursor test_cursor
as
select * from emp;

答案 2 :(得分:18)

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

答案 3 :(得分:11)

这是另一个区别(10g,无论如何)

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

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

您可以使用looseAS

创建此对象类型的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:遇到符号&#34; TABLE&#34;当期待以下之一时:对象不透明

答案 4 :(得分:2)

根据TutorialsPoint

  

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

并考虑以前的答案,

我想

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

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

答案 5 :(得分:2)

使用 AS 关键字代替 IS 关键字来创建独立功能

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

有关更多说明,请read this ...