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

Sql 中的 存储过程 使用

发布网友 发布时间:2022-04-30 04:54

我来回答

2个回答

懂视网 时间:2022-04-30 09:16

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

    在机房收费系统中。有些操作。须要多次运行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-30 06:24

以下为引用的内容:

  Create procere procee_name

  [@parameter data_type][output]

  [with]{recompile|encryption}

  as

  sql_statement

解释:

  output:表示此参数是可传回的

  with {recompile|encryption}

  recompile:表示每次执行此存储过程时都重新编译一次

  encryption:所创建的存储过程的内容会被加密

  二、SQL存储过程学习:存储过程的创建

  表book的内容如下

  编号     书名      价格

  001    C语言入门     $30

  002  PowerBuilder报表开发 $52

  实例1:查询表Book的内容的存储过程

  create proc query_book
  as
  select * from book
  go
  exec query_book

  实例2:加入一笔记录到表book,并查询此表中所有书籍的总金额

  Create proc insert_book
  @param1 char(10),@param2 varchar(20),@param3 money,@param4 money output
  with encryption ---------加密
  as
  insert book(编号,书名,价格) Values(@param1,@param2,@param3)
  select @param4=sum(价格) from book
  go
执行例子:

  declare @total_price money
  exec insert_book '003','Delphi 控件开发指南',$100,@total_price
  print '总金额为'+convert(varchar,@total_price)
  go

  存储过程的3种传回值:

  1.以Return传回整数

  2.以output格式传回参数

  3.Recordset

  传回值的区别:

  output和return都可在批次程式中用变量接收,而recordset则传回到执行批次的客户端中
SQL 中存储过程怎么使用?

1、创建一个存储过程 create procedure GetUsers()begin select * from user;end;12345 2、调用存储过程 call GetUsers();12 3、删除存储过程 drop procedure if exists GetUsers;二、带参数的存储过程 1、MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传...

怎么使用存储过程

create or replace p_test --创建存储过程,asv_counts int;--定义变量begin --开始select sum(counts) into v_counts from test;--将得到的结果放到变量里DBMS_OUTPUT.PUT_LINE(v_counts);--将结果打印输出end;--结束 执行这种不带输入参数的 begin p_test;end; 然后你检查下结果 再给你创建一个带...

sql 存储过程中 如何使用declare 有的存储过程声明了,有的没有声明...

1、打开SQL Database Studio。2、点击展开数据库连接和数据库。3、右击要修改的存储过程,然后点击【alter procedure】。4、此时进入存储过程编辑界面。5、修改存储过程语句。6、点击左侧的【execute】。7、此时显示执行结果,成功表示存储过程的定义修改完成了。

SQL中存储过程是干什么用的?

数据库存储过程的实质就是部署在数据库端的一组定义代码以及SQL。将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。每个参数名前要有一个“@”符号,每一个存储过程的参数仅为...

sql中的存储过程set是什么意思

的人添加 firstname:UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'WHERE子句设置查询条件,过滤掉不需要的数据行。结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

sql存储过程有啥用

Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过...

MS sql如何使用存储过程?

when 1 then '忙碌'end as '使用状态' from pc end;--调用存储过程 execute proc_student select * from pc go 3、创建带输入参数的存储过程 语法:代码如下复制代码 create procedure 存储过程名 参数1名 数据类型 [=默认值]...参数2名 数据类型[=默认值]as SQl与语句 ...go ...

SQL中创建的存储过程要怎么样才能运行?

存储过程是在SQL服务器上存储的已经过编译的SQL语句组.存储过程在第一次执行时要进行语法检查和编译,编译好的版本存储在过程高速缓存中供后续调用.存储过程可用于安全机制.假设某用户没有对指定表或视图的使用权限,但它具有使用存储过程的权限,通过执行存储过程,用户仍可以获得对存储过程中的表或试图的使用...

sql数据库中怎样调用带参数的存储过程

1、使用SQL语句 --a)方式一--exec 存储过程名称 参数名='值'exec P_Titles_ByType @type='business'go--b)方式二--exec 存储过程名称 参数值exec P_Titles_ByType 'business'2、可视化操作 a.在数据库中找到要执行的存储过程 b.右击存储过程,在出现的菜单中选择执行存储过程选项 c.在新出现...

使用SQL语句创建存储过程

使用SQL语句创建存储的具体过程如下:1、首先,打开企业管理器,选择【工具】-【查询分析器】:2、然后,输入SQL语句。如下:CREATE PROCEDURE byroyalty1 @percentage int AS select au_id from titleauthor where titleauthor.royaltyper = @percentage GO 3、然后,点击确定之后,命令就会自动添加进查询...

sql存储过程中临时表的使用 在存储过程的形参中使用 mysql存储过程中使用事务 存储过程中如何使用replace oracle存储过程中使用临时表 存储过程中使用临时序列 简述游标在存储过程中的作用 存储过程中的if 存储过程中的游标是什么
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
土豆干黄瓜钱炒肉做法 女朋友有分离焦虑症 恋爱分离焦虑症的表现 90年男马和92年女猴2816年年底结婚吉日 请帮我翻译一句中文,谢谢!!! DNF远古做错了3件首饰 dnf狂战远古3件首饰如何选择 女性结扎同房还能生吗 郑州私立高中学费大概多少钱 求救英文翻译!!! 怎样判断字符串是否由拼音组成 求判断字符串是否是拼音的成熟算法 韩语是不是拼音文字啊? 这个字叫什么,知道的说一声,我不知道是不是那个拼音 汉语的拼音是不是罗马音 ye 怎么读 是不是拼音 拼音是怎么组成的(是不是声母表和韵母表就能拼出所有的汉字) 拼音是不是汉语的音译? 是否怎么拼音 不是的拼音怎么写不是的? 你是不是陌生字的拼音? 我苹果手机玩球球大作战为什么会卡顿 不是,拼音? 《王者荣耀》和《球球大作战》一共有多少玩家? 是不是拼音都是声母,那就是声母了? - 信息提示 是否的拼音 球球大作战是不是可以苹果安卓同时在线吗 是不两个字的拼音 腾讯手游助手球球大作战怎么设置一键交叉吐 买回来的牛肉煮烂的很快而且还不说水这种牛肉有问题吗? 小米note电量耗尽之后冲不进去电 充着电屏幕一会亮一会灭怎么办 小米note我把电用完了手机自动关机了,充不进去电,如何才能充进去电 丝绒衣服上面有霉点能去掉吗 红米note9怎么没有微信视频美颜? 银行面试时,考官问我我的职业规划是什么,该怎么回答? 银行网申职业规划怎么写? 银行工作如何进行职业规划? 银行校园招聘网申:职业规划如何填写? 去银行应聘,如果被问到未来三年的职业规划该怎么回答 office2016激活不了怎么办 thinkpad office 2016激活不了怎么办 脸上的暗疮为什么会发黑?怎么弄掉它? 额头发黑长痘(暗疮)怎么办 我的脸上有一个暗疮一直都好不了,都有一年了,看着有点发黑,老是能挤出白色的东西,怎么办? 青春痘发黑怎么办? 为什么我痘痘发黑 痘痘没有挤干干净就张愈合了 表面发黑 里面是硬的 像是一个小囊肿,这该怎么办? 萧军的生平事迹? 萧军的资料