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

StackOverflow https://stackoverflow.com/questions/230348

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

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

VS

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

两者之间有什么区别吗?


编辑:显然,两者之间没有功能差异,但有些人遵循惯例使用“AS”。当SP是包装的一部分并且“IS”是包装的一部分时。什么时候不是。或者反过来说。 MEH。

有帮助吗?

解决方案

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

功能f IS ...

按选择创建视图...

其他提示

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

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

这有效......

cursor test_cursor
is
select * from emp;

......但这不是:

cursor test_cursor
as
select * from emp;

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

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

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

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

您可以使用 AS IS

创建此对象类型的 loose 表类型
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”。当期待以下之一时:对象不透明

根据 TutorialsPoint

  

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

并考虑以前的答案,

我想

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

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

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

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

有关详细说明,请阅读本文 ...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top