Ibr*_*fiq 0 sql oracle procedure package oracle-apex
现在苦苦挣扎了一个多小时......为什么不编译呢?
身体编译好:
create or replace package body "PKG_CUSTOMER" is
PROCEDURE Create_Customer
( pr_customer_id customer.Customer_id%type,
pr_country customer.country%type,
pr_first_name customer.first_name%type,
pr_last_name customer.last_name%type,
pr_birth_date customer.birth_date%type,
pr_customer_type customer.customer_type%type,
pr_address customer.address%type)
IS
BEGIN
INSERT INTO customer (Customer_ID,Country,First_Name,Last_Name,Birth_Date,Customer_Type,Address)
VALUES(pr_customer_id, pr_country, pr_first_name, pr_last_name, pr_birth_date, pr_customer_type, pr_address);
END Create_Customer;
PROCEDURE Delete_Customer(pr_customer_id customer.customer_id%type) IS
BEGIN
DELETE FROM order_line WHERE fk1_order_id IN (SELECT order_id FROM placed_order WHERE fk1_customer_id = pr_customer_id);
DELETE FROM placed_order WHERE fk1_customer_id = pr_customer_id;
DELETE FROM customer WHERE customer_id = pr_customer_id;
END Delete_Customer;
end "PKG_CUSTOMER";?
Run Code Online (Sandbox Code Playgroud)
但规范不会编译:
create or replace package PKG_CUSTOMER as
Procedure CREATE_CUSTOMER;
Procedure DELETE_CUSTOMER;
end;?
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Compilation failed,line 3 (21:20:46)
PLS-00323: subprogram or cursor 'CREATE_CUSTOMER' is declared in a package specification and must be defined in the package bodyCompilation failed,line 4 (21:20:46)
PLS-00323: subprogram or cursor 'DELETE_CUSTOMER' is declared in a package specification and must be defined in the package body
Run Code Online (Sandbox Code Playgroud)
我正在使用Oracle APEX.
包规范必须提供要公开的过程的完整规范.这包括参数.假设您希望将包中声明的两个过程都用于包外的调用方
create or replace package PKG_CUSTOMER
as
Procedure CREATE_CUSTOMER(
pr_customer_id customer.Customer_id%type,
pr_country customer.country%type,
pr_first_name customer.first_name%type,
pr_last_name customer.last_name%type,
pr_birth_date customer.birth_date%type,
pr_customer_type customer.customer_type%type,
pr_address customer.address%type);
Procedure DELETE_CUSTOMER(pr_customer_id customer.customer_id%type);
end;?
Run Code Online (Sandbox Code Playgroud)
如果您的目的是声明一个CREATE_CUSTOMER和一个DELETE_CUSTOMER每个接受0个参数的过程,那么您还需要在包体中实现这些过程.