问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL怎么调用存储过程

发布网友 发布时间:2022-04-08 03:57

我来回答

2个回答

懂视网 时间:2022-04-08 08:18

时隔一年,最终找到怎样使用存储过程了。

    在机房收费系统中。有些操作。须要多次运行sql语句,多次运行完毕才算是完毕这个事件流。

可是假设当中有一个环节出了错误,那么没出错误的那些操作是不是就多余了。

   运行存储过程。就是运行多句SQl语句。而事务。是为了控制这些语句 要么都做,要么 都不做。

在机房收费系统中。运行sql语句的时候。

 

    一般的sql语句用法:定义一个字符串,用于存放sql语句。之后指明commandtype=commandType.text  假设有參数的情况下,须要提供參数。

    使用存储过程的方法:写好存储过程,在vs中直接调用。指明commandtype=CommandType.StoredProcedure   假设有參数的情况下,须要提供參数。使用存储过程,避免了在vs中写 字符串。

 

接下来看一个实例。题:设置基本数据,首先须要取消之前使用的基本数据,然后再插入新的基本数据。

   首先。把使用的存储过程预先写入数据库。

Create procedure [dbo].[SetBasicData]
@rate char(16),@steptime char(16),@leasttime char(16),@mincash char(16),@cardtype char(16),@Heaf char(16)

as

begin tran
update T_Basic set cardtype='不使用' where cardtype=@cardtype
insert into T_Basic values(@rate,@steptime,@leasttime,@mincash,@cardtype,@Heaf,default,default)
if	@@ROWCOUNT<>2 --检查以上两条sql语句是否正确运行
	rollback tran	--没有正确运行,回滚
else
commit tran		--正确运行,提交事务



 


写完之后。能够在以下的位置 找到写好的存储过程。

技术分享

 

在这里,就省略U层和B层了。

仅仅对照一下D层的代码就能够了。

 

1、没有使用存储过程的D层代码

''' <summary>
 ''' 插入新的基本数据
 ''' </summary>
 ''' <param name="basic">新的基本数据实体</param>
 ''' <param name="head">操作人的姓名</param>
 ''' <returns></returns>返回true表示插入成功,返回false表示失败
 ''' <remarks></remarks>
 Public Function SetBasicInfo(basic As Entity.BasicInfoEntity, head As String) As Boolean Implements IDAL.IBasic.SetBasicInfo
 Dim strSQL As String
 strSQL = "Update BasicData_Info set status='不使用' where status=@status Insert into BasicData_Info(Rate,stepTime,leasttime,preparetime,mincash,head,status) values(@Rate,@stepTime,@leastTime,@prepareTime,@minCash,@head,@status)"

 Dim helper As New SqlHelper
 Dim sqlparameter As SqlParameter() = {New SqlParameter("@Rate", basic.Rate),
      New SqlParameter("@stepTime", basic.StepTime),
      New SqlParameter("@leastTime", basic.LeastTime),
      New SqlParameter("@minCash", basic.MinCash),
      New SqlParameter("@head", head),
      New SqlParameter("@status", basic.Status)}
 Dim flag As Boolean
 flag = helper.UpdDelAlter(strSQL, CommandType.Text, sqlparameter)

 Return flag
 End Function

2、使用存储过程的D层代码

''' <summary>
 ''' 设置基本数据
 ''' </summary>
 ''' <param name="basic">基本数据实体</param>
 ''' <returns></returns>返回true表示插入成功,返回false表示失败
 ''' <remarks></remarks>
 Public Function SetBasicData(basic As Entity.BasicEntity) As Boolean Implements IDAL.IBasic.SetBasicData
 Dim strSQL As String = "SetBasicData" '存储过程名
 Dim sqlparams As SqlParameter() = {New SqlParameter("@rate", basic.Rate), 
      New SqlParameter("@steptime", basic.StepTime),
      New SqlParameter("@leasttime", basic.LeastTime),
      New SqlParameter("@mincash", basic.MinCash),
      New SqlParameter("@cardtype", basic.CardType),
      New SqlParameter("@Heaf", basic.Heaf)} '传入參数

 Dim helper As New SqlHelper
 Dim flag As Boolean
 flag = helper.UpdDelAlter(strSQL, CommandType.StoredProcedure, sqlparams)

 Return flag
 End Function



     对照上面的两种方法。

     第一种方法:假设插入的基本数据设定有错,那么运行该操作之后,该系统中基本数据就被改动为‘不使用’的状态。出现错误。

     另外一种方法,省去了写sql语句的麻烦。并且 假设数据库有变动,不须要改动代码。能够直接在sql server中 改动存储过程,也方便调试。

     总结:使用存储过成能够提高数据的运行速度。当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。能够极大的提高数据库的使用效率,降低程序的运行时间,这一点在较大数据量的数据库的操作中是很重要的。在代码上看。SQL语句和程序代码语句的分离。能够提高程序代码的可读性

        假设有更加上优化方法。欢迎指出!

 

版权声明:本文博客原创文章。博客,未经同意,不得转载。

sql使用存储过程和交易

标签:

热心网友 时间:2022-04-08 05:26

 建立好SQL存储过程,在很多的时候就会调用这些存储过程。使用到存储过程中的结果集。但若直接使用SQL存储过程结果集与其他表进行连接,却比较麻烦,如使用openrowset来进行调用存储过程却是不安全的。来看看openrowset的命令参数就知道了:select * from openrowset('sqloledb','ip';'user';'pwd','exec 库..过程') 。参数需要使用的数据库的密码,并且SQL默认是没有允许openrowset执行的。
  其实我们可以还使用的其实方法,更安全地调用SQL存储过程。
http://jingyan.baidu.com/article/915fc4149ad49e51384b204e.html
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
水笔在手上画画会不会被衣服搽掉下来 老人每天大便次数很多量不多也不稀,每天还会拉三四次水应经三个月了... 从大连飞机场怎么去大连经济开发区5彩城K区的大连金港大酒店 除了打 ... 请问从大连周水子国际机场到经济技术开发区怎么走最省钱? 中国古代名刀总录中国古代十大名刀 怎样把qq安装到iphone里面 苏科大什么梗 苏科大叫什么名字 lol苏科大是苏州科技大学的吗 lol苏州科技大学为什么这么厉害 优尔精医用降温贴是不是保健品? 家里穷是该继续上学还是尽早出来工作? 家穷无钱读大学,究竟放弃还是继续呢? 在大学生活穷的时候该怎么办? 家里贫穷的我上了一所学费很贵的大学,我该怎么办? 我是大一女生,家里很穷,很自卑,都不知道要怎么办 我上大三,家里很穷,我很惆怅怎么办? 家里没钱读不起大学怎么办? 家里穷该不该上大学? 我一个同学家里很穷,没钱供着她上大学怎么办 家里很穷连贷款都不够上大学怎么办? 家里很穷,性格孤僻,觉得大学自己也念不好,干脆不想念了,不过之前成绩很好,985的大学,很痛苦怎么 萧军纪念馆的馆舍简介 一生经历了三次婚姻,民国才女萧红到底最爱谁? 萧军的一生与哪几个女人纠缠不清的 巨量长阴如何判断是洗盘还是出货? 民国才女萧红一生经历了三次婚姻,谁才是她的真爱? 萧红和萧军离婚,萧红的一生有多坎坷? 萧红,契诃夫,鲁迅,萧军的简介 长痘痘后痘痘变黑,应该怎么办? 萧军,萧红原名分别是( ),各自的代表作分别有( ) 大学生怎么克服因为家里穷而自卑 23岁大学毕业家里穷,我却很懒,不想工作怎么办? 我是一名大学生,我家里很穷,而且我有缺陷 读了2b学院接近一年,可是家里很穷,父母需要很辛苦才能供自己上大学,那我还要读下去吗 我是一名大学生,家里穷,自己没本事跟朋友比我一无是处我是否该远离 泸州老窖与五粮液的口感的区别? 泸州老窖好还是五粮液好? 泸州老窖和五粮液同属浓香型它们有什么相同之处? 五粮液和国窖1573在口感上到底有什么差异? 五粮液与泸州老窖的区别??? 泸州老窖和五粮液相比,那个更好喝 请分析一个以储存鲜果为主的仓库需要用到哪些设备设施? 白酒中的酱香型酒茅将酒和浓香型酒五粮液、泸州老窖等有什么区别? 泸州老窖和五粮液哪个更好 我想买个冷藏集装箱做冷库,存放水果蔬菜可以吗?20尺的箱用电多少? 5个月需要的产检是哪些项目? 水果储存能用大纸箱吗 吃完饭就很快饿了,怎么回事 贵州茅台 五粮液 泸州老窖 谁的品质真正最好 为什么我刚吃完饭不久就会觉得很饿呢,饿了还会