我創建了一個包和一個包體,但我不確定如何測試持久包變量中的值。調用一個持久化包變量
這裏是包代碼,其相當簡單,只是一個刪除程序和創建功能,它們都在包體中。
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