我创建了一个包和一个包体,但我不确定如何测试持久包变量中的值。调用一个持久化包变量
这里是包代码,其相当简单,只是一个删除程序和创建功能,它们都在包体中。
CREATE OR REPLACE PACKAGE customers AS
FUNCTION create_customer (Country VARCHAR2, First_Name VARCHAR2, Last_name VARCHAR2,
Birth_date VARCHAR2, Customer_Type VARCHAR2, Address VARCHAR2)
RETURN VARCHAR2;
PROCEDURE remove_customer (customer_id VARCHAR2);
FUNCTION count_customer RETURN NUMBER;
END customers;
喏,这就是包体
create or replace package body customers AS
total_customers NUMBER;
FUNCTION CREATE_CUSTOMER(
Country IN VARCHAR2 ,First_Name IN VARCHAR2 ,Last_Name IN VARCHAR2 ,Birth_Date IN VARCHAR2 ,Customer_Type IN VARCHAR2 ,Address IN VARCHAR2
) return VARCHAR2 IS
new_customer_id VARCHAR2(8);
BEGIN
SELECT custid_seq.NEXTVAL
INTO new_customer_id
FROM DUAL;
INSERT INTO customer (Customer_id, Country, First_Name, Last_name, Birth_date, Customer_Type, Address)
VALUES (new_customer_id, Country, First_Name, Last_name, Birth_date, Customer_Type, Address);
total_customers := total_customers + 1;
RETURN (new_customer_id);
end;
PROCEDURE remove_customer (customer_id VARCHAR2) IS
BEGIN
DELETE FROM customer
WHERE customer.customer_id = remove_customer.customer_id;
total_customers := total_customers - 1;
END;
BEGIN
select count(*) into total_customers from customer;
END;
的total_customers是我的执着包变量,只有本地的这个包我只是想知道我可以测试一下,看看目前保存的值变量。
感谢您的帮助
您是否尝试添加一个返回当前值的公共函数? (我认为我在你以前的问题上建议过)。 – 2013-04-29 12:04:18
嗨,我不确定这会如何工作对不起,我非常了解PLSQL – 2013-04-29 12:08:34
正如亚历克斯提到的那样,'total_customers'的值仅在一个会话中有效。因为Oracle数据库上的PL/SQL应用程序几乎可以肯定是多用户的,所以我会将它变成一个返回客户总数“count”的函数。 – 2013-04-29 14:54:02