代码之家  ›  专栏  ›  技术社区  ›  Ishmaeel

在Oracle存储过程中,“as”和“is”有什么区别?

  •  83
  • Ishmaeel  · 技术社区  · 16 年前

    我看到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”。或者反过来。无聊的。
    6 回复  |  直到 6 年前
        1
  •  56
  •   Tony Andrews    16 年前

    没有什么。它们是为使代码更具可读性而提供的同义词:

    函数f是…

    创建视图V作为选择…

        2
  •  50
  •   Nick Pierpoint    16 年前

    一个微小的差别…

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

    这工作…

    cursor test_cursor
    is
    select * from emp;
    

    …但这并不是:

    cursor test_cursor
    as
    select * from emp;
    
        3
  •  17
  •   Markus Amalthea Magnuson Mohit Verma    9 年前

    “is”和“as”在创建过程和包时用作同义词,但不用于光标、表或视图。

        4
  •  11
  •   StuartLC    10 年前

    这是另一个区别(至少10克)

    给定松散对象类型:

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

    您可以创建一个 loose 此对象类型的表类型 AS IS

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

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

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

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

    错误(2,30):PLS-00103:期望出现以下情况之一时遇到符号“Table”:对象不透明

        5
  •  2
  •   Dániel Sándor    7 年前

    根据 TutorialsPoint

    使用as关键字而不是is关键字创建 独立程序。

    考虑到以前的答案,

    我猜

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

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

    .

        6
  •  2
  •   Pankaj Shivalkar    6 年前

    这个 AS 使用关键字而不是 用于创建的关键字 独立函数 .

    [a 独立的 存储函数是一个函数( 返回单个值的子程序 )存储在数据库中。 注意:使用create function语句创建的独立存储函数是 不同的 来自您在pl/sql块或包中声明和定义的函数。]

    更多解释, read this