浅谈存储过程

前言 

       之前看了很多博客有用存储过程的,但是看不怎么懂,就没有用。在遇到组合查询的时候,相较于之前,逻辑还算是复杂些,于是想用用存储过程。

        当调用好几个表的时候,只要将sql语句写入存储过程,那么复杂的过程就很简单了。

注意:因为目前为止直接出国sql sever ,所以以sql sever为例

一、概念

看看sql sever联机丛书是怎么说的:

    1、存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。
  2、可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。
  3、也可以创建在 Microsoft SQL Server 启动时自动运行的存储过程。

二、创建存储过程

一开始想把存储过程写在VS中,但是怎么写也写不对。最后还是决定写到sql sever中吧。

首先要先了解一些存储过程的基本知识:语法、调用方法等。

<pre name="code" class="sql">

 
CREATE PROC 存储过程名称
    [参数列表(多个以“,”分隔)]
AS
SQL 语句
意思是告诉sql sever要建立一个存储过程, 后面是存储过程名称;

下面写参数;如果哪个参数后面跟着OUTPUT,就说明这个参数是为了输出的。

AS下面就是存储过程的内容了。

只要将代码在“查询分析器”里执行一次,SQL SERVER就会在当前数据库中创建一个存储过程。你可以打开“企业管理器”,选择当前操作的数据库,此时就可以在列表中看到你刚刚创建的存储过程了(我不会告诉别人如果没有,刷新一下即可O(∩_∩)O哈哈~)。

举个例子:

<pre name="code" class="vb">CREATE PROC StudentInfoQuery
@CardNo varchar(10)
@UserID varchar(10)
@StudentName varchar(10)
AS
BEGIN
Select * From T_Student Where UserID=@UserID
End

 

三、调用存储过程

3.1初级

既然创建了,就要调用一下(因为你还没有到全智能的时候呢,(*^__^*) 嘻嘻……)。用一下上面的例子。存储过程名称是 StudentInfoQuery,查询学生信息。

public Function Query_StuInfo(StudentInfo as Entity.StudentEntity)as list (of  Entity.StudentEntity) Impelments IDAL.StudnetIDAL.Query_StuInfo
	Dim Sqlhelper as new SqlHelper
	Dim Cmdtext as string="StudentInfoQuery"
	Dim Paras as SqlParamer()={New sqlParamer("CardNo",StudentInfo.CardNO)}
	Dim dt as Datatable
	Dim mylist as new list(of Entity.StudnetEntity)
	dt=Sqlhelper.ExecSelect(Cmdtext,Command.Text,paras)
	mylist=GetGenerics.CoverToList((of  Entity.StudentEntity)(dt)
	Return mylist
end Function
以上进行一些简单的创建、调用存储过程了。

3.2进阶

       咱们以后会用到各种复杂多变的存储过程,现在就不要想都懂了,但是一步步深化还是要有的。我还不怎么懂,希望各位大神们,有空帮帮我。

       比如机房收费系统里的退卡,咱们来分析一下,退卡需要知道会操作哪些表:Student和ReturnCard两个表。

       然后分析一下会有哪些业务逻辑:A、根据卡号查询Student表内的余额 B、将计算后的余额更新到Student表中 C、将退卡信息插入到ReturnCard表中。这样基本上就完成了退卡的操作。

来看看退卡的存储过程该怎么写吧。

CREATE PROCEDURE ReturnCard
@StudentNo varchar(50)
@CardNo varchar(50)
@Cash varchar(10) output
@userID varchar(50)
@DateTime varchar(50)
AS
DECLARE @OCash varchar(50)
Begin

	select * From T_Student where CardNo=@CardNo ,Cash=@Cash
	@oCash=@Cash-@Cash
	Insert Into(UserID,CardNo,Cash,DateTime)Values(@UserID,@CardNo,@Cash,@DateTime)
	update T_Student set oCash=@oCash Where CardNo=@CardNo
END


存储过程确实可以帮助我们减少很多的麻烦,有很多好处,但是要理解它还要多多实践。
代码有问题,希望各位大神们,帮帮我。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
cache memory(缓存内存)是计算机系统中重要的组成部分,用于提高CPU的访问速度和整体性能。它由高速存储器和相关的控制逻辑组成,位于CPU和主存储器之间。cache memory将最频繁使用的数据和指令存储在靠近CPU的高速存储器中,以便快速访问。 cache memory的设计目标是解决CPU与主存储器之间的速度差异。由于主存储器的访问速度较慢,当CPU需要读取或写入数据时,cache memory会首先检查自己的高速存储器中是否已经保存了需要的数据。如果有,那么就直接从cache memory中读取数据,避免了访问主存的延迟。而如果cache memory中没有需要的数据,则CPU再去访问主存储器。 cache memory采用了局部性原理,即程序执行时,存在频繁访问的数据和指令的局部性特点。这些频繁访问的数据和指令存储在cache memory中,使得CPU的访问速度变得更快。cache memory通过高速存储器和替换算法来提供快速访问,并且通过预取技术可以预先将可能需要的数据加载到cache memory中,减少了指令的等待时间。 在计算机系统中,由于程序执行过程中存在大量的重复访问和数据的无效读写,cache memory能够有效地提高整体性能。但是,cache memory的容量有限,如果数据在cache memory中不存在,就需要去主存储器中读取,会引发cache miss(缓存未命中)问题。cache miss会导致CPU需要等待数据的加载,从而降低了性能。 因此,在设计计算机系统时,需要综合考虑cache memory的容量、速度、替换算法等因素,以达到合理的设计。cache memory的优化和管理是一个复杂的工程,需要根据具体应用的特点来进行适当的配置和调整,以实现最佳的性能提升。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值