使用存储过程的优点和缺点

优点

1.降低网络传输数据量:通过存储过程的名称和参数传递即可调用执行,不用传输sql语句。

2.执行效率高:sqlserver会事先将存储过程编译成可执行的二进制代码,运行存储过程时,无需再次编译。

3.封装性:也可叫模块式编程,将实现某种功能的多条sql封装到一个对象中,可多次重复调用,可移植性强。

4.安全:可针对不同的权限的用户使用不同的存储过程。

缺点

1.调试麻烦,但是用 PL/SQL Developer  调试很方便!弥补这个缺点。

2.移植问题,数据库端代码当然是与数据库相关的。但是如果是做工程型项目,基本不存在移植问题。

3.重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。

4.如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的,维护起来更麻烦。

创建

USE [newcharge_sys]
GO
/****** Object:  StoredProcedure [dbo].[proc_OffLine]    Script Date: 2018/2/26 8:17:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[proc_OffLine]@CardNo char(10),@StuNo char(11),@Date date,@Type char(10),@StuName char(10),@Sex char(10),@Department char(10),@OnDate date,@OnTime time(0),@Computer char(10),@Cash numeric(10, 3),@Offdate date,@Offtime time(0),@ConsumeTime char(10),@Consume numeric(18,1),@Status char(10)asdelete from OnLine_Info where CardNo = @CardNoupdate Linelog_Info setOffdate = @Offdate,Offtime = @Offtime,ConsumeTime = @ConsumeTime,Consume = @Consume,Cash = @Cash,Status = @StatuswhereCardNo = @CardNo and Ondate = @OnDate and Ontime = @OnTimeupdate Card_Info set Cash = @Cash where CardNo = @CardNo

调用

            SqlParameter[] sqlparas = {//将存储过程中的名字与程序中的名字对应起来new SqlParameter("@CardNo",line[0].CardNo),new SqlParameter("@StuNo",line[0].StuNo),new SqlParameter("@Date",line[0].Date),new SqlParameter("@Type",line[0].CardType),new SqlParameter("@StuName",line[0].StuName),new SqlParameter("@Sex",line[0].Sex),new SqlParameter("@Department",line[0].Department),new SqlParameter("@OnDate",line[0].OnDate),new SqlParameter("@OnTime",line[0].OnTime),new SqlParameter("@Cash",line[0].Cash),new SqlParameter("@Computer",line[0].Computer),new SqlParameter("@Offdate",line[0].Offdate),new SqlParameter("@Offtime",line[0].Offtime),new SqlParameter("@ConsumeTime",line[0].ConsumeTime),new SqlParameter("@Consume",line[0].Consume),new SqlParameter("@Status",line[0].Status)};string procname = "proc_OffLine";sqlhelper.ExecuteNonQuery(procname, sqlparas, CommandType.StoredProcedure);

C#调用sql存储过程相关推荐

  1. JAVA调用SQL存储过程详解

    1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列.不带参数的 call 转义序列的语法如下所示: {call procedure-nam ...

  2. java sql函数_Java调用Sql存储过程实例讲解

    1.使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转 义序列.不带参数的 call 转义序列的语法如下所示: {call procedure-n ...

  3. 在Spring框架中使用SQL存储过程

    Spring框架也支持对SQL存储过程的调用,SQL存储过程是一组预先定义好的SQL语句,并存储到数据库管理系统中,外部程序可以直接调用执行.本课主要讨论在Spring框架中应用程序如何调用MySQL ...

  4. ASP调用sql server 存储过程详解-附带实例-

    ado文档对使用指定属性创建新的 Parameter 对象. 语法 Set parameter = command.CreateParameter (Name, Type, Direction, Si ...

  5. Java调用SQL Server的存储过程详解

    本文较长,包含了如下几部分 使用不带参数的存储过程 使用带有输入参数的存储过程 使用带有输出参数的存储过程 使用带有返回状态的存储过程 使用带有更新计数的存储过程 1使用不带参数的存储过程 使用 JD ...

  6. java调用存储过程 sql server_Java中调用SQL Server存储过程示例

    Java中调用SQL Server存储过程示例2007-09-03 08:48来源:论坛整理作者:孟子E章责任编辑:方舟·yesky评论(3) 最近做了个Java的小项目(第一次写Java的项目哦), ...

  7. jpa执行mysql存储过程_基于Spring Boot,使用JPA调用Sql Server数据库的存储过程并返回记录集合...

    那么,有些情况,会把一些查询语句写在存储过程中,由存储过程来返回记录集. 在这里就先通过EntityManager创建命名存储过程的方法完成调用. 1.创建SQL存储过程 存储过程返回所有的联系人. ...

  8. 第七节:EF Core调用SQL语句和存储过程

    一. 查询类(FromSql) 1.说明 A. SQL查询必须返回实体的所有属性字段. B. 结果集中的列名必须与属性映射到的列名相匹配. C. SQL查询不能包含关联数据 D. 除Select以为的 ...

  9. C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息

    C#调用SQL中的存储过程中有output参数,类型是字符型的时候一定要指定参数的长度.不然获取到的结果总是只有第一字符.本人就是由于这个原因,折腾了很久.在此记录一下,供大家以后参考! 例如: CR ...

最新文章

  1. 资源 | 来自独秀同学的深度网络数学笔记,还不快收藏?
  2. 2.Azure资源组迁移
  3. MySQL 之视图、 触发器、事务、存储过程、内置函数、流程控制、索引(二)
  4. Spring之高级装配(二)
  5. 生成树(STP)学习笔记
  6. 数据库名、实例名、数据库域名、全局数据库名、服务名 我也迷糊了
  7. canal下载 linux_阿里canal数据库同步ES使用
  8. [bzoj 4066]简单题
  9. [JNI]开发实例(1)封装libjpeg库 保证图片质量压缩图片
  10. 给语音信号加混响的常用方法(方法三)
  11. 屏幕录像软件camtasia2022汉化版好用的录屏软件
  12. 企业微信接入第三方应用(以服务商身份)
  13. Python.密码本生成
  14. 财报汇总 | 可口可乐、爱立信、中国平安、格林酒店等5家企业公布最新业绩
  15. 别混淆区别很大 LED网格屏和格栅屏区别对比及分析
  16. 在线CAD图纸批注功能方案比较与实现
  17. 以太网(Ethernet)通信简单理解
  18. springmvc 升级到5.2.15版本,前台时间显示时间戳全局处理
  19. cdma2000解析_LTE和CDMA2000互操作方案分析
  20. vue img初始化时不显示图片错误图标

热门文章

  1. 【聊天室系统源码】多语言海外版匿名中英文聊天室开发
  2. 被加班逼到要用猝死换休息的程序员们
  3. flutter ios打包_安卓开发者如何使用Flutter打包IOS应用
  4. html怎么注释掉代码_HTML注释:如何注释掉您HTML代码
  5. 第3章 使用SQL*Plus
  6. CAD简单制作风向(风速)玫瑰图
  7. cesium实现三维空间量测功能
  8. 深入解读 Elasticsearch 热点线程 hot_threads
  9. 测试开发人才稀缺,2018测试之旅来袭
  10. 手机QQ2008广告过滤