【问题标题】:What does "IS" do in Oracle procedures?Oracle 程序中的“IS”有什么作用?
【发布时间】:2019-04-09 17:59:24
【问题描述】:

我想在 Oracle 中创建一个过程;但是,我在 Internet 上查看的任何示例都有一个“IS”语法,我找不到它的任何功能。

CREATE [OR REPLACE] PROCEDURE procedure_name
    [ (parameter [,parameter]) ]

IS
    [declaration_section]

BEGIN
    executable_section

[EXCEPTION
    exception_section]

END [procedure_name];

有人知道“IS”是做什么的吗?

【问题讨论】:

  • IS 只是属于语法,增强可读性。你也可以这样问:“在 GROUP BY 中,GROUP 后面必须跟 BY。BY 的功能是什么?”
  • 您是在问 [declaration_section] 中的内容吗?
  • @ThorstenKettner:“BY”不会单独出现,“GROUP BY”有定义和功能。另一方面,“IS”总是单独出现并具有模糊的功能。
  • @WW:不,我知道 [Declaration_Section] 中发生了什么,我只是不知道“IS”有什么用。

标签: oracle stored-procedures syntax


【解决方案1】:

ISCreate procedure 语法的一部分:(可以替换为AS

它将过程定义与其内容分开。

后面的可选声明部分允许您声明局部变量。

【讨论】:

    【解决方案2】:

    IS,在这种情况下,告诉我们(和编译器)接下来是过程的body。它的缺失告诉我们(和编译器)它只是一个声明(例如,包体中的前向声明):

    create or replace package body mypkg is
    
      -- this is just a forward declaration for the procedure
      procedure myproc (id in number);
    
      -- this is the full definition of the procedure
      procedure myproc (id in number)
      IS
        ..body of myproc..;
    
    end mypkg;
    

    在模式级过程的情况下,我们可以(理论上)有一个语法使IS 可选,因为不需要前向声明;但是(谢天谢地)PL/SQL 的设计者保持语法与包内语法一致,所以仍然需要IS

    【讨论】:

      猜你喜欢
      • 2010-09-18
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 2015-03-02
      • 1970-01-01
      • 2023-02-03
      相关资源
      最近更新 更多