Как вызвать функцию внутри процедуры? - PullRequest
0 голосов
/ 31 октября 2018

как вызвать функцию в процедуре. Я много чего ищу в интернете и не смог найти.

Моя функция в теле пакета выглядит следующим образом:

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;
  /

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Если вы просто хотите вызвать функцию в процедуре, вы можете вызвать ее как усредненную функцию, показанную ниже, и сохранить ее значение в переменной процедуры.

SELECT AVG(SALARY) INTO V_AVG_SAL FROM EMPLOYEES;
0 голосов
/ 31 октября 2018

У вас есть много способов, как это сделать.

  1. поменять местами методы в пакете (сначала «подфункция», а затем процедура).

  2. добавить функцию в спецификацию пакета и вызвать ее с точечной нотацией

  3. Использовать предварительную декларацию

Я думаю, что предварительное объявление является лучшим в вашем случае.

https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/subprograms.htm#i4096

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...