首页 文章

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

提问于
浏览
81

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

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

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

这两者有什么区别吗?


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

6 回答

  • 10

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

  • 17

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

    功能f是......

    根据选择创建视图...

  • 55

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

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

    这有效......

    cursor test_cursor
    is
    select * from emp;
    

    ......但这不是:

    cursor test_cursor
    as
    select * from emp;
    
  • 50

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

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

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

    您可以使用 ASIS 创建此对象类型的 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”:对象不透明

  • 2

    根据TutorialsPoint

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

    并考虑以前的答案,

    我猜

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

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

    .

  • 1

    使用 AS 关键字代替 IS 关键字来创建 standalone function .

    [A standalone 存储函数是存储在数据库中的函数( a subprogram that returns a single value ) . 注意:使用CREATE FUNCTION语句创建的独立存储函数是来自您在PL / SQL块或包中声明和定义的函数的 different . ]

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

相关问题