Oracle存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
CREATE [OR REPLACE] PROCEDURE procedure_name
[ (parameter_name [IN | OUT | IN OUT] type [, ...]) ]
IS | AS
[declaration_section]
BEGIN
executable_section
[EXCEPTION
exception_section]
END [procedure_name];
CREATE OR REPLACE PROCEDURE greet_employee (p_emp_id IN NUMBER)
IS
v_emp_name VARCHAR2(100);
BEGIN
SELECT employee_name INTO v_emp_name
FROM employees
WHERE employee_id = p_emp_id;
DBMS_OUTPUT.PUT_LINE('Hello, ' || v_emp_name || '!');
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Employee not found');
END greet_employee;
CREATE OR REPLACE PROCEDURE get_employee_salary (
p_emp_id IN NUMBER,
p_salary OUT NUMBER
)
IS
BEGIN
SELECT salary INTO p_salary
FROM employees
WHERE employee_id = p_emp_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
p_salary := NULL;
END get_employee_salary;
DECLARE
v_salary NUMBER;
BEGIN
get_employee_salary(100, v_salary);
DBMS_OUTPUT.PUT_LINE('Salary: ' || v_salary);
END;
EXECUTE greet_employee(100);
SHOW ERRORS PROCEDURE procedure_name
查看详细错误EXPLAIN PLAN
分析SQL语句性能存储过程是Oracle数据库中强大的功能,合理使用可以显著提高数据库应用的性能和可维护性。