声明 PL/SQL 过程/函数时是不是必须使用“IN”和“OUT”关键字?

Posted

技术标签:

【中文标题】声明 PL/SQL 过程/函数时是不是必须使用“IN”和“OUT”关键字?【英文标题】:Are the 'IN' and 'OUT' key words compulsory when declaring a PL/SQL procedure/function?声明 PL/SQL 过程/函数时是否必须使用“IN”和“OUT”关键字? 【发布时间】:2013-06-09 00:13:29 【问题描述】:

我现在正在学习PL/SQL,遇到了一些误区,比如在声明一个过程的时候,在指明参数类型的时候一定要写关键字'IN'和'OUT'吗?因为我在 Oracle 文档网站上看到了一些程序声明。在一种情况下,IN 出现在参数列表中

PROCEDURE double (
    original    IN  VARCHAR2,
    new_string  OUT VARCHAR2
  ) AS
  BEGIN
   new_string := original || original;
 END;

BEGIN
 DBMS_OUTPUT.PUT_LINE ....

在另一种情况下没有IN:

CREATE OR REPLACE PROCEDURE award_bonus (
  emp_id NUMBER, bonus NUMBER) AS
  commission    REAL;
  comm_missing  EXCEPTION;
BEGIN
  SELECT ....

“IS”和“AS”这两个关键词有什么区别吗?

【问题讨论】:

【参考方案1】:

在Oracle PLSQL 中,共有三种参数模式——INOUTIN OUT。不必指定IN 模式。如果不指定参数模式,则取为IN。对于其他两个,您应该指定模式。在您的第二个示例中,两个参数都被视为IN

您可以使用ISAS 关键字中的任何一个。没有区别。

查看documentation了解更多详情。

【讨论】:

以上是关于声明 PL/SQL 过程/函数时是不是必须使用“IN”和“OUT”关键字?的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 编程游标存储过程函数

PL/SQL - 如何检查是不是正在使用包/过程/函数?

oracle数据库之PL/SQL 块结构和组成元素

PL/SQL 函数中的 XmlRoot、XmlElement、InsertChildXml 给出 PLS-00201 必须声明标识符

在 PL/SQL 包中声明全局异常

在 PL/SQL 存储过程中声明游标