存储过程(Stored Procedure)

简介: 存储过程(Stored Procedure)

存储过程(Stored Procedure)

存储过程定义

摘自百度百科

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。


可以简单理解为存储过程是封装好的一个完成特定功能函数,通过使用存储过程名来执行这个函数。

存储过程如何使用

在SQL Server中创建存储过程

找到数据库-表-可编译性-存储过程-右击新建存储过程。

create proc sp_name
@[参数名] [类型],@[参数名] [类型]
as
begin
.........
end

实例:

CREATE PROCEDURE news_update --存储过程名
--使用到的参数,
@id int,
@title varchar(100),
@content text,
@caid int
AS
BEGIN
--SQL语句
  UPDATE  news
SET           title = @title, [content] = @content, caId = @caid
where id = @id 
END
GO

调用存储过程

存储过程可以在三种环境下被调用:

command命令下,基本语法为:exec sp_name [参数名];

实例:

exec news_update @id=6,@title=abc,@content=def,@caid=13


SQL环境下,基本语法为:call sp_name [参数名];

PL/SQL环境下,基本语法为:begin sp_name [参数名] end;

删除存储过程

drop procedure sp_name

C#中调用存储过程

DAL层代码

SQLHelper类
    /// <summary>
        /// 指向带参数的SQL语句或存储过程
        /// </summary>
        /// <param name="cmdText">QL语句或存储过程</param>
        /// <param name="paras">参数集合</param>
        /// <param name="ct">命令类型</param>
        /// <returns></returns>
        public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)
        {
            //初始化 System.Data.DataTable 类的新实例。
            DataTable dt = new DataTable();
            //使用查询的文本和 System.Data.SqlClient.SqlConnection 初始化 System.Data.SqlClient.SqlCommand
            //类的新实例
            cmd = new SqlCommand(cmdText, GetConn());
            cmd.CommandType = ct;
            //在Parameters末尾添加值数组
            cmd.Parameters.AddRange(paras);
            //using执行完时释放()中的内容,相应的数据库连接也会关闭
            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                //通过所提供的 System.Data.IDataReader,用某个数据源的值填充 System.Data.DataTable。 如果 System.Data.DataTable
                //     已经包含行,则从数据源传入的数据与现有行合并。
                dt.Load(sdr);
            }
            //返回查询结果
            return dt;
        }
News类
    /// <summary>
        /// 取出最新10条新闻(所属分类、新闻标题、发布时间)
        /// </summary>
        /// <returns></returns>
        public DataTable SelectNewNews()
        {
        //procNews_SelectNewNews为存储过程名
            return sqlhelper.ExecuteQuery("procNews_SelectNewNews", CommandType.StoredProcedure);
        }

为什么使用存储过程

存储过程只在创造时进行编译,以后每次执行存储过程都不需重新编译;而一般SQL语句每执行一次就需要编译一次,所以使用存储过程可提高数据库执行速度;

当对数据库进行复杂操作时(如对多个表进行增删改查),可将这些复杂操作通过存储过程封装起来,避免程序中sql语句过长。

目录
相关文章
|
存储 SQL Oracle
【Oracle系列】- 存储过程(Stored Procedure)
【Oracle系列】- 存储过程(Stored Procedure)
250 0
|
6月前
|
存储 SQL 关系型数据库
MySQL技能完整学习列表7、存储过程和函数——1、存储过程(Stored Procedures)的创建和执行——2、函数(Functions)的创建和使用
MySQL技能完整学习列表7、存储过程和函数——1、存储过程(Stored Procedures)的创建和执行——2、函数(Functions)的创建和使用
74 0
|
6月前
|
SQL 存储 分布式计算
DataWorks产品使用合集之在DataWorks中调用存储过程(PROCEDURE)如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
184 0
|
6月前
|
存储 SQL 安全
函数(Function)和存储过程(Stored Procedure)的区别(小白情感版)
函数(Function)和存储过程(Stored Procedure)的区别(小白情感版)
249 0
|
存储 SQL Oracle
AnalyticDB PostgreSQL 7.0 支持存储过程(CREATE PROCEDURE)特性
AnalyticDB PostgreSQL 7.0 新增了存储过程功能的支持,让用户在使用ADB PG时能够更方便高效地开发业务,并能够更好地兼容Oracle等传统数仓的业务。
494 1
AnalyticDB PostgreSQL 7.0 支持存储过程(CREATE PROCEDURE)特性
|
存储 关系型数据库 MySQL
【MySQL】存储过程1305 - PROCEDURE xkgl.studnet_grade does not exist
存储过程不存在,重新执行创建存储过程的命令,查看是否有该存储过程。
|
存储 SQL 关系型数据库
SQL 存储过程 procedure 讲解+代码实例
SQL 存储过程 procedure 讲解+代码实例
SQL 存储过程 procedure 讲解+代码实例
|
存储 SQL Java
数据库小技能:存储过程(stored procedure)
过程(procedure)又叫存储过程(stored procedure),是一个有名称的PL/SQL程序块 。 过程相当于java中的方法, 它注重的是实现某种业务功能 。 函数(function)也相当于java中的方法,它 注重计算并且总是有返回结果 。 过程和函数都是能够永久存储在数据库中的程序代码块,应用时通过调用执行 。
149 1
|
22天前
|
存储 SQL NoSQL
|
1月前
|
存储 SQL 关系型数据库
MySql数据库---存储过程
MySql数据库---存储过程
36 5
下一篇
无影云桌面