存储过程(Stored Procedure)

  • 存储过程定义
  • 存储过程如何使用
    • 在SQL Server中创建存储过程
    • 调用存储过程
    • 删除存储过程
    • C#中调用存储过程
  • 为什么使用存储过程

存储过程定义

摘自百度百科

存储过程(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语句过长。

存储过程(Stored Procedure)相关推荐

  1. oracle 存储过程 stored procedure 查询一条记录或多条记录

    创建基本表 -- Create table create table USER_INFORMATION ( P_ID            NUMBER, USER_LOGIN_NAME NVARCH ...

  2. mysql无法创建存储过程(stored procedure

    在mysql下 mysql> CREATE PROCEDURE myproc() BEGIN END; 出现: Error Code: 1655 Cannot create stored rou ...

  3. JAVA→JDBCJava DataBase Connectivity、存储过程Stored Procedure、事务Transaction、连接池DBCP C3P0、JDBC升级替代框架

    致虚极,守静笃. 万物并作,吾以观其复. 夫物芸芸,各复归其根. 归根曰静,是谓复命. 复命曰常,知常曰明. 不知常,妄作凶. 知常容,容乃公,公乃全,全乃天,天乃道,道乃久,没身不殆. ----&l ...

  4. Stored Procedure 里的 WITH RECOMPILE 到底是干麻的?

    Stored Procedure 里的 WITH RECOMPILE 到底是干麻的? 原文:Stored Procedure 里的 WITH RECOMPILE 到底是干麻的? 在 SQL Serve ...

  5. JDBC连接执行mysql存储过程报权限错误:User does not have access to metadata required to determine stored procedure

    项目场景: mysql创建数据加工流程,使用dophinscheduler定时调度运行项目. 问题描述 运行报错:java.sql.SQLException:User does not have ac ...

  6. SQL存储过程(Stored Procedure)

    SQL存储过程(Stored Procedure) 什么是存储过程? 存储过程(procedure)类似于C语言中的函数 用来执行管理任务或应用复杂的业务规则 存储过程可以带参数,也可以返回结果 存储 ...

  7. MySQL 存储过程(Stored Procedure)

    MySQL 5.0 版本开始支持存储过程. 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象. 存储过程是为了完成特定功能的SQL语句集,经编 ...

  8. SQLSERVER使用CLR Stored Procedure导出数据到Excel

    在实际应用中,我们经常需要导出数据到Excel文件,你可以使用DTS或SSIS来做.但有时,我们并不需要这么重量级的工具,直接用CLR SP实现就可以了. 假设你已经写好了导出Excel的C# cod ...

  9. Dnn中常见的一个错误及可能原因:Could not find stored procedure 'dbo.GetPortals'

    Could not find stored procedure 'dbo.GetPortals' 错误的 {objectqualifier}. 数据库的版本保存在dnn.config 中,assemb ...

  10. Springboot mysql访问异常:User does not have access to metadata required to determine stored procedure

    错误信息: User does not have access to metadata required to determine stored procedure  parameter types. ...

最新文章

  1. 小米造车150天:烈火烹油第一枪
  2. 2011阿里巴巴集团实习生招聘笔试题 CC++
  3. 搭建一个VUE+Express前后端分离的开发环境
  4. 全志A33-串口的使用
  5. C语言编程出图形,C语言画出各种图形
  6. MIP ACCESS细节剖析
  7. 湖南省普通招生2021高考成绩查询,湖南省2021八省联考成绩可查,附查询入口及往年分数线...
  8. Python爬取Boss直聘,帮你获取全国各类职业薪酬榜
  9. 【转载】 vs2005视频教程 之 抽象类和接口 四 [视频]
  10. AcWing 802. 区间和
  11. paip.技术重要还是管理重要还是创意重要
  12. Arcgis中的空间插值
  13. 怎么用spss做冗余分析_利用SPSS进行相关分析(第八章)概述.ppt
  14. 固定IP和自动IP切换bat脚本
  15. 什么是Subscript?
  16. 曾经觉得学习晦涩难懂的我是如何爱上linux
  17. 企业为什么要绘制用户画像?谈谈用户画像的真正作用
  18. 1108 String复读机
  19. Java WEB开发须知知识点---概况篇
  20. 博文视点官方博客http://blog.csdn.net/bvbook

热门文章

  1. 【装机】将mbr硬盘转换为gpt
  2. 单片机点亮LCD1602A液晶屏
  3. 警告:integer division in floating-point context
  4. 姿态估计1-03:FSA-Net(头部姿态估算)-白话给你讲论文-翻译无死角(1)
  5. 一个JSP页面打开另外一个JSP页面并传值
  6. FFmpeg —— 13.示例程序(七):视频编码器(YUV编码为H265)
  7. 抖音上用计算机算66,抖音年龄计算器
  8. 操作系统引导程序顺序
  9. 无限战争选择服务器,无限战争新手攻略 新手入门必看技巧
  10. 服务器网卡信息BIOS中设置,bios设置如何关闭网卡