存储过程

简介: 存储过程

存储过程是一组为了完成特定功能的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

  1. 数据库管理:Oracle是一款功能强大的数据库管理系统,可用于数据的存储、保护、维护和管理等。其数据存储结构基于表格,支持SQL语言,有多种数据类型,可以优化复杂查询,提高查询速度。同时,Oracle可以支持多用户同时访问数据库,保障数据的安全性和完整性。
  2. 易用性:Oracle具有强大的管理和分析功能,同时其界面友好,易于使用。Oracle提供了丰富的功能组件,如数据备份、恢复、性能优化、权限管理、数据安全等等,使得IT人员能够清晰地了解数据库的运行状况和性能开销,对于重要生产系统的连续稳健运行非常重要。
  3. 可移植性:Oracle支持多种操作系统,如Windows、Linux、Unix等等,这使得Oracle具有较好的可移植性和跨平台性,能在不同的操作系统上运行,具有互通性。此外,Oracle还可以搭配不同系统的硬件设备,根据不同的需求和业务环境进行灵活配置,能够在不同场景下提供更佳的运行性能和扩展能力。
  4. 高性能:Oracle的RAC高可用软件架构使得企业核心系统可以运行在小型机上,通过硬件的可靠保障业务的连续。RAC架构推出后,使用Intel的x86 CPU服务器可以在更低的成本下实现相似的可靠性,还能提供更强的性能(CPU核数增多、内存量暴涨)。
  5. SQL优化:Oracle的CBO优化器可以根据统计信息对复杂SQL形成优异的执行计划,提高查询效率。同时,Oracle还提供了调整统计信息、HINT、SQL Profile等功能,可以人为控制SQL的执行计划。
相关文章
|
7天前
|
存储 SQL Oracle
存储过程
存储过程 oracle存储过程procedure:是一个为了完成特定功能的sql语句块,经编译后存放在数据库中,第一次编译后不需要再进行编译,用户可以通过指定名称和传递参数来执行。 优点: 1.高效,编译一次后保存到数据库,以后调用不需要编译,直接执行,减少编译时间; 2.降低网络流量,存放于数据库中,远程调用不会传输大量字符串的sql语句; 3.复用性高,存储过程是针对某一特定功能创建的,当再需要完成特定功能时调用该存储即可; 4.可维护性高,功能发生细微变化时,只需修改小部分代码即可; 5.安全性高,完成某一特定功能的存储过程是特定用户创建的,具有身份限制。 结构:过程声明
17 2
|
5月前
|
存储 SQL 数据库
SQL 语言:存储过程和触发器
SQL 语言:存储过程和触发器
81 6
|
存储 SQL Java
什么是存储过程?
我们可以把存储过程看成是一些 SQL 语句的集合,中间加了点逻辑控制语句。存储过程在业务比较复杂的时候是非常实用的,比如很多时候我们完成一个操作可能需要写一大串 SQL 语句,这时候我们就可以写有一个存储过程,这样也方便了我们下一次的调用。存储过程一旦调试完成通过后就能稳定运行,另外,使用存储过程比单纯 SQL 语句执行要快,因为存储过程是预编译过的。
110 0
|
存储 SQL 缓存
存储过程详细介绍
存储过程详细介绍
|
存储 SQL NoSQL
第15章_存储过程与函数
第15章_存储过程与函数
113 0
|
存储 SQL NoSQL
存储过程与函数
MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程序无须关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调用存储过程和函数即可
存储过程与函数
|
存储 SQL 数据库
存储过程详解
存储过程详解
245 0
存储过程详解
|
存储 数据安全/隐私保护