Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何调用过程中的函数?_Oracle_Plsql - Fatal编程技术网

Oracle 如何调用过程中的函数?

Oracle 如何调用过程中的函数?,oracle,plsql,Oracle,Plsql,如何在过程中调用函数。 我在网上找了很多东西,但一直没能找到 我在包体中的函数如下所示: CREATE OR REPLACE PACKAGE BODY account_api AS PROCEDURE add_new_account ( p_acc_id accounts.acc_id%type , p_acc_name accounts.acc_name%type , p_acc_amount accounts.acc_am

如何在过程中调用函数。 我在网上找了很多东西,但一直没能找到

我在包体中的函数如下所示:

CREATE OR REPLACE PACKAGE BODY account_api AS
    PROCEDURE add_new_account
        ( p_acc_id     accounts.acc_id%type
        , p_acc_name   accounts.acc_name%type
         , p_acc_amount accounts.acc_amount%type
         , p_acc_date   accounts.acc_date%type)
      IS
      BEGIN
         INSERT INTO accounts(acc_id, acc_name, acc_amount, acc_date)
        VALUES (p_acc_id, p_acc_name, p_acc_amount, p_acc_date);     
    COMMIT;
     EXCEPTION
            WHEN OTHERS THEN
            ROLLBACK;
           RAISE;
   END;
  FUNCTION get_date
      (p_acc_id    accounts.acc_id%type)
   RETURN date IS res1 date;
  BEGIN
      SELECT acc_date INTO res1
      FROM accounts WHERE acc_id = p_acc_id;
      RETURN res1;
  end;
  end account_api;
  /

你有很多方法可以做到这一点

  • 交换包中方法的位置(“子函数”先是“过程”)

  • 将函数添加到包规范中,并使用点表示法调用它

  • 使用远期申报

  • 我认为对你们来说,远期申报是最好的


    如果您只想在过程中调用函数,可以像下面所示的平均函数一样调用它,并将其值存储在过程的变量中

    SELECT AVG(SALARY) INTO V_AVG_SAL FROM EMPLOYEES;
    

    该过程在同一个包中?是的,在同一个包中,我编辑了我的代码。您有一个功能,可以从
    帐户
    表中选择现有记录。您有一个将新记录插入
    帐户
    表的过程。将函数放入过程的逻辑是什么?我有选择和删除的过程,我没有发布它们。谢谢你的回答,你能给我写信告诉我如何调用函数吗。我来读这个