【问题标题】:What is the difference between "AS" and "IS" in an Oracle stored procedure?Oracle存储过程中的“AS”和“IS”有什么区别?
【发布时间】:2010-09-18 19:46:23
【问题描述】:

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

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

对比

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

这两者有区别吗?


编辑:显然,两者在功能上没有区别,但是有些人遵循约定,当 SP 是包的一部分时使用“AS”,而不是包时使用“IS”。或者反过来。嗯。

【问题讨论】:

  • 第二个不是总是简单地指向另一个实际实现该功能的过程吗?
  • 在我的测试中,两者似乎都适用于完全相同的主体。不知道指向另一个 proc。

标签: oracle stored-procedures keyword


【解决方案1】:

无所谓。它们是为使您的代码更具可读性而提供的同义词:

函数 f 是 ...

创建视图 v 选择 ...

【讨论】:

    【解决方案2】:

    一个小区别...

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

    这行得通...

    cursor test_cursor
    is
    select * from emp;
    

    ...但这不是:

    cursor test_cursor
    as
    select * from emp;
    

    【讨论】:

    • Dileep Krishnamurthy 的回答完成了这个
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      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”:对象不透明

      【讨论】:

        【解决方案5】:

        根据TutorialsPoint

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

        并考虑以前的答案,

        我猜

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

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

        【讨论】:

          【解决方案6】:

          AS 关键字代替 IS 关键字用于创建独立函数

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

          更多解释,read this...

          【讨论】:

            猜你喜欢
            • 2018-06-21
            • 2013-06-19
            • 1970-01-01
            • 2015-09-25
            • 2021-02-20
            • 1970-01-01
            • 2015-10-20
            • 2011-07-08
            • 1970-01-01
            相关资源
            最近更新 更多