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

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

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

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

两者有什么区别?


编辑:显然,两者之间没有function差异,但有些人遵循约定,当SP是包的一部分时使用“AS”,当不是的时候使用“是”。 或者相反。 咩。

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

functionf …

CREATE VIEW v AS SELECT …

一个小小的区别…

它们是包和程序的同义词,但不适用于游标:

这工作…

 cursor test_cursor is select * from emp; 

…但是这不:

 cursor test_cursor as select * from emp; 

“IS”和“AS”在创build过程和包时不作为游标,表或视图的同义词。

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

给定一个松散的对象types:

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

您可以使用ASIS创build一个loose表格types的此对象types

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

但是,如果在包中创build相同的表types,则必须使用IS

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

在包中使用AS产生以下错误:

错误(2,30):PLS-00103:遇到下列其中一项时遇到符号“TABLE”:object opaque