存储过程

简介: 存储过程

存储过程是一组为了完成特定功能的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的执行计划。
相关文章
|
9天前
|
存储 SQL Oracle
存储过程
存储过程 oracle存储过程procedure:是一个为了完成特定功能的sql语句块,经编译后存放在数据库中,第一次编译后不需要再进行编译,用户可以通过指定名称和传递参数来执行。 优点: 1.高效,编译一次后保存到数据库,以后调用不需要编译,直接执行,减少编译时间; 2.降低网络流量,存放于数据库中,远程调用不会传输大量字符串的sql语句; 3.复用性高,存储过程是针对某一特定功能创建的,当再需要完成特定功能时调用该存储即可; 4.可维护性高,功能发生细微变化时,只需修改小部分代码即可; 5.安全性高,完成某一特定功能的存储过程是特定用户创建的,具有身份限制。 结构:过程声明
20 2
|
存储 SQL Java
什么是存储过程?
我们可以把存储过程看成是一些 SQL 语句的集合,中间加了点逻辑控制语句。存储过程在业务比较复杂的时候是非常实用的,比如很多时候我们完成一个操作可能需要写一大串 SQL 语句,这时候我们就可以写有一个存储过程,这样也方便了我们下一次的调用。存储过程一旦调试完成通过后就能稳定运行,另外,使用存储过程比单纯 SQL 语句执行要快,因为存储过程是预编译过的。
110 0
|
存储 SQL 缓存
存储过程详细介绍
存储过程详细介绍
|
存储 SQL NoSQL
第15章_存储过程与函数
第15章_存储过程与函数
114 0
|
存储 SQL NoSQL
存储过程与函数
MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程序无须关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调用存储过程和函数即可
存储过程与函数
|
存储 SQL 数据库
存储过程详解
存储过程详解
245 0
存储过程详解
|
存储
存储过程的语法讲解
在上一篇文章:别再说不知道什么是存储过程和存储函数了中简单的介绍了存储过程和存储函数以及其使用。其实存储过程是可以进行编程的,所以可以和其他的编程语言一样使用变量、表达式以及控制结构进行编程,从而实现一些复杂和有用的功能。
247 0
存储过程的语法讲解
|
存储 数据安全/隐私保护