Прежде всего вам необходимо определиться с именем таблицы accounts
или account
.Я предположил, что accounts
для отредактированного блока кода, который появится ниже.
Для PROCEDURE add_new_account
количество аргументов для значений
список больше, чем количество аргументов для столбцасписок имен.
- Для
PROCEDURE upd_account
, в выражении UPDATE не указан идентификатор, определенный как p_acc_naziv
. - Для
PROCEDURE del_accounts
IS BEGIN
деталь отсутствует
Перед package body
должно быть package header
как:
CREATE OR REPLACE PACKAGE 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);
PROCEDURE upd_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
);
PROCEDURE del_accounts
(p_acc_id accounts.acc_id%type);
FUNCTION get_amount
(p_acc_id accounts.acc_id%type)
return Number;
FUNCTION get_date
(p_acc_id accounts.acc_id%type)
RETURN date;
end account_api;
, а package body
должно быть как:
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 (-- acc_seq.nextval, --> need to be removed
p_acc_id, p_acc_name, p_acc_amount, p_acc_date);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
END;
PROCEDURE upd_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
UPDATE accounts
SET /*acc_naziv = p_acc_naziv --> there's no identifier defined as p_acc_naziv
-->> suppose you'd use "acc_name = p_acc_name" here.
, */acc_amount = p_acc_amount
, acc_date = p_acc_date
WHERE acc_id = p_acc_id;
COMMIT;
END;
PROCEDURE del_accounts
(p_acc_id accounts.acc_id%type)
IS --> missing
BEGIN --> missing
DELETE FROM accounts WHERE acc_id = p_acc_id;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
END;
FUNCTION get_amount
(p_acc_id accounts.acc_id%type)
return Number is res number;
begin
select acc_amount into res
from accounts where acc_id =p_acc_id;
return res;
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;