如何在过程中调用函数。 我在互联网上找了很多东西,但找不到。
我在程序包主体中的功能如下:
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;
/
答案 0 :(得分:0)
您有很多方法来做到这一点。
交换方法在程序包中的位置(“子功能”然后是过程)。
将函数添加到程序包规范中,并使用点符号进行调用
使用前向声明
我认为前向声明在您的情况下是最好的。
https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/subprograms.htm#i4096
答案 1 :(得分:0)
如果只想在过程中调用函数,则可以像下面所示的平均值函数一样调用它,并将其值存储在过程的变量中。
SELECT AVG(SALARY) INTO V_AVG_SAL FROM EMPLOYEES;