Khi lưu trữ các Stored procedures hay packages, Oracle sẽ tự động lưu lại trạng thái của nó là VALID hay INVALID.
VALID: Stored procedures hay packages có trạng thái là VALID nếu nó đã được biên dịch và khơng có lỗi xảy ra. Khi này, nó sẵn sàng cho việc sử dụng.
INVALID: là trạng thái ngược lại với trạng thái VALID. Stored procedures hay Packages vẫn còn lỗi khi biên dịch. Khi này, ta chưa thể sử dụng được ngay.
Cú pháp lệnh yêu cầu biên dịch lại Stored procedures:
ALTER PROCEDURE [schema_name].<procedure_name> COMPILE [DEBUG]; Với:
schema_name tên schema chứa procedure cần biên dịch lại Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
procedure_name tên của procedure biên dịch lại.
COMPILE chỉ định yêu cầu biên dịch lại procedure
DEBUG chỉ định chương trình biên dịch mã lệnh PL/SQl
của procedure sẽ sinh mã lệnh phù hợp để chương trình PL/SQL debugger có thể đọc. User có thể sử dụng chương trình này để dị tìm và gỡ lỗi cho procedure.
Ví dụ:
ALTER PROCEDURE henry.close_acct COMPILE;
Tương tự như đối với procedure, cú pháp lệnh yêu cầu biên dịch lại Stored function có dạng: ALTER FUNCTION [schema_name].<function_name> COMPILE [DEBUG]; Ví dụ:
ALTER FUNCTION merriweather.get_bal COMPILE;
Đối với package, lệnh yêu cầu biên dịch lại cũng tương tự nhưng có thêm một bổ sung là user phải khai báo rõ từng phần của package sẽ được biên dịch lại.
Cú pháp:
ALTER PACKAGE [schema_name].<package_name>
COMPILE [DEBUG] <PACKAGE | SPECIFICATION | BODY>;
Các khai báo bổ sung cho phép user yêu cầu biên dịch lại phần SPECIFICATION hay phần BODY hoặc là biên dịch lại cả hai phần trên.
Ví dụ:
ALTER PACKAGE blair.accounting COMPILE PACKAGE; Hoặc:
ALTER PACKAGE blair.accounting
COMPILE BODY;
Để xác định được trạng thái của các Stored procedures, ta có thể thực hiện truy vấn dựa trên dictionary DBA_OBJECTS.
SVRMGR> SELECT object_name, object_type, status
2> FROM dba_objects WHERE object_name like ’DBMS_%’
OBJECT_NAME OBJECT_TYPE STATUS
-------------------- --------------- --------
DBMS_ALERT PACKAGES VALID
DBMS_ALERT PACKAGES BODY VALID
DBMS_ALERT_INFO TABLE VALID
DBMS_APPLICATION_INF PACKAGES VALID DBMS_APPLICATION_INF PACKAGES BODY VALID
DBMS_AQ PACKAGES VALID
DBMS_AQ PACKAGES BODY VALID
...
Hoặc ta cũng có thể sử dụng lệnh DESCRIBE để lấy thông tin SVRMGR> DESCRIBE dbms_session.set_role procedure SET_ROLE (ROLE_CMD VARCHAR2);
svrmgr> describe dbms_session packages dbms_session is ------------
-- OVERVIEW
-- This packages provides access to SQL "alter session" -- statements, and other session information from, stored -- procedures.
---------------------------- -- PROCEDURES AND FUNCTIONS
procedure set_role(role_cmd varchar2); -- Equivalent to SQL "SET ROLE ...". -- Input arguments:
-- role_cmd
-- This text is appended to "set role " and then executed as -- SQL.
procedure set_sql_trace(sql_trace boolean);
-- Equivalent to SQL "ALTER SESSION SET SQL_TRACE ..." -- Input arguments:
-- sql_trace
-- TRUE or FALSE. Turns tracing on or off.
procedure set_nls(param varchar2, value varchar2);
Stored procedures hay Packages nhận trạng thái INVALID khi các câu lệnh trong Stored procedures hay Packages bị lỗi.