存储过程是一组为了完成特定功能的SQL语句集,它存储在数据库中,可以一次编译后永久有效。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,可以在数据量特别庞大的情况下提高效率。
存储过程通常用于执行复杂的任务或是频繁的数据操作,因为这样可以减少客户端和服务器之间的通信开销,提高数据库性能。存储过程在大型应用程序和数据库系统中尤为重要。
存储过程的创建需要通过SQL语句来实现
CREATE PROCEDURE usp_get_all_employees AS BEGIN SELECT * FROM employees; END
这个存储过程的名字是usp_get_all_employees
,它用于从名为employees
的表中检索所有数据。该存储过程没有参数,因此在执行时只需指定其名字即可
EXEC usp_get_all_employees;
此外,也可以创建带有参数的存储过程,这样在调用时就需要提供参数值。
CREATE PROCEDURE usp_get_employee_by_id @id INT AS BEGIN SELECT * FROM employees WHERE id = @id; END
存储过程可以在数据库中任意位置执行,并且可以在客户端应用程序中使用。例如,我们可以在C#中使用ADO.NET来执行存储过程
using System; using System.Data.SqlClient; class Program { static void Main() { SqlConnection conn = new SqlConnection("Data Source=server_name;Initial Catalog=database_name;Integrated Security=True"); conn.Open(); SqlCommand cmd = new SqlCommand("usp_get_employee_by_id @id = 1", conn); cmd.CommandType = CommandType.StoredProcedure; SqlParameter param = new SqlParameter("@id", 1); cmd.Parameters.Add(param); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine(reader["name"] + "\t" + reader["age"]); } reader.Close(); conn.Close(); } }
存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数来执行它。
带参数存储过程是指存储过程中声明该参数,每个存储过程参数都必须用惟一的名称进行定义。与标准的Transact-SQL变量相同,参数名必须以@为前缀,并且遵从对象标识符规则。当用户不提供该参数的值时可以使用一个默认值来代替。
不带参数存储过程虽然没有声明参数,但是仍然需要使用“?”来代替,在调用存储过程时,不传递“?”后面的参数。
不带参数
CREATE OR REPLACE PROCEDURE query_tab01 AS ICount NUMBER; BEGIN SELECT COUNT(*) INTO ICount FROM T; DBMS_OUTPUT.PUT_LINE(TO_CHAR(ICount)); END;
调用该存储过程的方法如下
CALL query_tab01;
为什么使用Oracle
- 数据库管理:Oracle是一款功能强大的数据库管理系统,可用于数据的存储、保护、维护和管理等。其数据存储结构基于表格,支持SQL语言,有多种数据类型,可以优化复杂查询,提高查询速度。同时,Oracle可以支持多用户同时访问数据库,保障数据的安全性和完整性。
- 易用性:Oracle具有强大的管理和分析功能,同时其界面友好,易于使用。Oracle提供了丰富的功能组件,如数据备份、恢复、性能优化、权限管理、数据安全等等,使得IT人员能够清晰地了解数据库的运行状况和性能开销,对于重要生产系统的连续稳健运行非常重要。
- 可移植性:Oracle支持多种操作系统,如Windows、Linux、Unix等等,这使得Oracle具有较好的可移植性和跨平台性,能在不同的操作系统上运行,具有互通性。此外,Oracle还可以搭配不同系统的硬件设备,根据不同的需求和业务环境进行灵活配置,能够在不同场景下提供更佳的运行性能和扩展能力。
- 高性能:Oracle的RAC高可用软件架构使得企业核心系统可以运行在小型机上,通过硬件的可靠保障业务的连续。RAC架构推出后,使用Intel的x86 CPU服务器可以在更低的成本下实现相似的可靠性,还能提供更强的性能(CPU核数增多、内存量暴涨)。
- SQL优化:Oracle的CBO优化器可以根据统计信息对复杂SQL形成优异的执行计划,提高查询效率。同时,Oracle还提供了调整统计信息、HINT、SQL Profile等功能,可以人为控制SQL的执行计划。