一:解释
SQL Server提供了一种方法:可以将一些预先编译的SQL语句集中起来由SQL Server数据库服务器来完成以实现某个任务,这就是存储过程。存储过程常驻在SQL Server数据库服务器的内存中。
二:优点
1.运行的熟读快,比SQL语句执行速度快2~10倍
2.可以接受参数,输出参数返回单个或多个结果集以及返回值。可以向程序返回错误的原因
3.运行稳定错误较少
4.主要是在服务器上运行,减少对客户机的压力
5.可以包含程序流、逻辑以及对数据库的查询
6.可以在单个存储过程中执行一系列的SQL语句
7.增加网络流量,降低网络负担,如果使用单条调用语句的方式,就必须传输大量的SQL语句
三:结构
实例:
定义一个存储过程:
CREATE PROCEDURE  Department_Add-- Add the parameters for the stored procedure here@DepartmentName nvarchar(50),@Tel1 nvarchar(20),@Tel2 nvarchar(20),@Displayorder int   AS
BEGININSERT INTO Department(DepartmentName,Tel1,Tel2,Displayorder)VALUES(@DepartmentName,@Tel1,@Tel2,@Displayorder)
END
GO

右键:执行

执行成功:
执行生成的SQL语句:
通用的修改的存储过程:
语句:
-- =============================================
-- Author:     孙丽媛
-- Create date: 2016-9-27
-- Description: 通用的存储过程
-- =============================================
CREATE PROCEDURE UpdateTableByCondition@tableName nvarchar(100), --修改的表@columns nvarchar(300),  --修改的列--@values nvarchar(600),  --修改的值@conditions nvarchar(500)=‘1=1’    --修改的条件AS
BEGINdeclare @sql nvarchar(2000)  --定义sql语句--对变量赋值1.select  在查询中赋值--2.set  直接赋值SET @sql='UPDATE '+@tableName+' set '+@columns+' where '+@conditionsprint @sqlEND

执行的效果图:
通用删除的存储过程:
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: 通用的删除存储过程
-- =============================================
CREATE PROCEDURE DeleteTableByCondition @tableName nvarchar(100),   -- 删除的表@condition nvarchar(500)=''   --删除的条件AS
BEGINdeclare @Sql nvarchar(1000)SET @Sql = 'Delete from '+@tableName+' '+@condition--print @SqlEXEC(@Sql)
END
GO

通用添加的存储过程:

Create proc CommonInsertProc
(
@tbName nvarchar(255),--表名
@fldName nvarchar(1000),--列名
@fldValue nvarchar(2000) --值
)
As
Set nocount on
/*定义变量*/
Declare @strSQL varchar(4000)
Set @strSQL='Insert into ['+@tbName+'] ('+@fldName +') values('+@fldValue +')'
Exec(@strSQL)
Go

通用查询的存储过程:

1.实现查询指定表返回所有信息

-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description:   根据指定表返回所有数据
-- =============================================
CREATE PROCEDURE GetDataByTableName
@tableName nvarchar(2000)
AS
BEGINSET NOCOUNT ON;DECLARE @Sql nvarchar(2000)SET @Sql='select * from '+@tableNameEXEC(@Sql)
END
GO

2.实现查询指定表指定列返回信息

-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: 查询指定的表,指定列的信息
-- =============================================
CREATE PROCEDURE getDataByTableNameValue@tableName nvarchar(500),@columns nvarchar(2000)
AS
BEGINSET NOCOUNT ON;DECLARE @Sql nvarchar(4000)SET @Sql='select '+@columns+' from '+@tableNameEXEC(@Sql)
End
GO

3.实现查询指定表按照不同的条件查询返回信息

-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: 根据指定列,指定条件,指定表查询数据
-- =============================================
CREATE PROCEDURE GetDataByCondition@tableName nvarchar(200),@columns nvarchar(500),@condition nvarchar(500)=' 1=1'AS
BEGIN-- SET NOCOUNT ON added to prevent extra result sets from-- interfering with SELECT statements.SET NOCOUNT ON;DECLARE @sqlStr nvarchar(2000)SET @sqlStr='select '+@columns+' from '+@tableName+' where '+@conditionEXEC(@sqlStr)
END
GO

分页的通用存储过程:

-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: 分页数据查询
-- =============================================
CREATE PROCEDURE getDataByPageIndex@table nvarchar(200),   --查询表@coumlns nvarchar(1000),   --查询列@pk nvarchar(50),   --主建列@condition nvarchar(500)=' and 1=1 ',    --查询条件@pageIndex int=0,  --列的索引@pageSize int=10  --列的页数AS
BEGIN-- SET NOCOUNT ON added to prevent extra result sets from-- interfering with SELECT statements.SET NOCOUNT ON;DECLARE @sql nvarchar(4000)SET @sql='select top '+CAST(@pageSize AS nvarchar(10))+' '+@coumlns +' from '+@table+' where '+@pk +' not in (select top '+CAST((@pageSize*@pageIndex) AS nvarchar(10))+' '+ @pk+ ' FROM '+@table+ ' where 1=1  '+@condition+')'+@condition
END
GO

转载于:https://www.cnblogs.com/sunliyuan/p/5914376.html

ERP通用存储过程封装(三)相关推荐

  1. 一劳永逸,iOS 网页视图控制器通用类封装

    原文链接:http://www.jianshu.com/p/553424763585 随着 H5 的发展,在 iOS 开发中,网页视图的使用率逐渐提升,为了增加代码封装度.减轻开发负担,因此通常会对网 ...

  2. 适合千万数据查询分页操作的一个通用存储过程

    适合千万数据查询分页操作的一个通用存储过程 一.引言                最近上班比较忙,所以就很少写东西了,MongoDB系列的文章也要拖后了,没办法,工作第一,没工作就没饭吃了.今天正好 ...

  3. 通用路由封装协议--GRE的简单配置

    基于华为设备简单配置GRE GRE--通用路由封装协议 一.GRE是什么? 二.GRE有什么用? 1.多协议本地网可以通过GRE隧道传输 2.与IPSec结合,保护组播数据 三.GRE怎么用? 1.隧 ...

  4. MySQL:尽量不要用存储过程封装业务逻辑

    本篇文章讨论并不是:不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用.而是关于:"业务逻辑是不是要封装在存储过程中实现,这样子php.java等就是调用存储过程". ...

  5. 减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同

    转:减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同 本篇文章讨论并不是:不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用.而是关于:"业务逻辑是不是要封装在存 ...

  6. [百万级]通用存储过程.分页存储过程

    /*  名称:spAll_ReturnRows  输入:  输出:  调用:   EXEC spAll_ReturnRows 'SELECT  * FROM 表名', 页号, 返回记录数, '主键', ...

  7. mysql通用分页_MySQL海量数据的通用存储过程分页代码

    本节主要内容: MySQL海量数据的通用存储过程分页代码 本节为大家分享一例mysql 通用存储过程分页.海量数据分页的代码. 1,测试用的表结构: 复制代码 代码示例: CREATE TABLE I ...

  8. 漫谈ERP实施服务的三种境界

    一个ERP项目的成功并不代表一个行业的成功,一个ERP项目的失败并不意味着一个产品的失败.虽然不同的ERP实施模式在实施内容.实施流程.实施方法上大同小异,但不同的ERP实施境界所产生的效率.效果.效 ...

  9. Oracle大数据量分页通用存储过程

    type refCursorType is REF CURSOR;  --游标类型定义,用于返回数据集 /*********************************************** ...

最新文章

  1. Reveal 的初步用法
  2. 怎样才算精通Python?
  3. html文件嵌入到reportlab,Reportlab学习笔记
  4. 怎么利用Excel统计各分数段的人数?(亲测sum函数可用)
  5. 设计模式之-观察者模式(Observer Design Pattern)
  6. 数学--数论-多重集排列组合与母函数
  7. android 各版本市占率,Android各版本市占率:果冻豆遥遥领先
  8. qq浏览器如何进入私密 qq浏览器怎样进入私密
  9. 【深度增强学习 初步学习总结】
  10. 网络面试100道(路由交换)
  11. linux syn 队列,TCP SYN队列与Accept队列详解
  12. 台式计算机显卡驱动位置,台式电脑独立显卡怎么安装驱动的
  13. 信用修复的社会意义及基本概念、要素?
  14. 阿里EasyExcel对Excel复杂模版填充实现并设置单元格格式
  15. 工作11年后一切归零
  16. iphone投影到电脑屏幕,QuickTime出现报错和黑屏的解决方案
  17. 将阿拉伯数字转换成罗马数字 Integer to Roman
  18. PPT怎么调计算机,PPT演示者模式怎么设置
  19. 如何查杀stopped进程
  20. Vue3 中还处在实验性阶段 Suspense 是个啥?

热门文章

  1. 《scikit-learn》SVM(一)
  2. [可视化-tableau]tableau的学习实践入门篇
  3. echart多个柱状图 设置y轴显示_Echart可视化学习笔记(五)
  4. 窗口缩小 怎么让定位的盒子不动_一次解决你的图像尺寸和定位问题
  5. Mac下安装caffe(cpu-only)
  6. 计算机网络 —— OSI参考模型
  7. CentOs基础操作指令(运行级别)
  8. 离线排序——LR模型
  9. 【小程序】【Tips】跨页面全局变量的正确方法 - globalData
  10. QT 008 UI Add action 的方法