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

Ish*_*eel 88 oracle stored-procedures keyword

我看到Oracle程序有时用"AS"编写,有时用"IS"关键字编写.

CREATE OR REPLACE Procedure TESTUSER.KILLINSTANCE (INSTANCEID integer) **AS**
...
Run Code Online (Sandbox Code Playgroud)

CREATE OR REPLACE Procedure TESTUSER.KILLINSTANCE (INSTANCEID integer) **IS**
...
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别吗?


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

Ton*_*ews 61

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

功能f是......

根据选择创建视图...


Nic*_*int 52

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

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

这有效......

cursor test_cursor
is
select * from emp;
Run Code Online (Sandbox Code Playgroud)

......但这不是:

cursor test_cursor
as
select * from emp;
Run Code Online (Sandbox Code Playgroud)

  • Dileep Krishnamurthy的答案完成了这一点 (4认同)

小智 19

"IS"和"AS"在创建过程和包时充当同义词,但不是游标,表或视图的同义词.


Stu*_*tLC 11

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

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

CREATE TYPE someRecordType AS OBJECT
(
   SomeCol VARCHAR2(12 BYTE)
);
Run Code Online (Sandbox Code Playgroud)

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

CREATE OR REPLACE TYPE someTableType
        IS {or AS} TABLE OF someRecordType;
Run Code Online (Sandbox Code Playgroud)

但是,如果在包中创建相同的表类型,则必须使用IS:

CREATE OR REPLACE PACKAGE SomePackage IS
    TYPE packageTableType IS TABLE OF someRecordType;
END SomePackage;
Run Code Online (Sandbox Code Playgroud)

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

错误(2,30):PLS-00103:遇到以下其中一项时遇到符号"TABLE":对象不透明