sql存储过程有什么用(sql存储过程的使用)

sql存储过程有什么用,sql存储过程的使用内容导航:sql存储过程有啥用sqlserver存储过程是什么意思sql存储过程分页如何写呢SQL存储过程的作用和优缺点一、sql存储过程有啥用Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的

sql存储过程有什么用,sql存储过程的使用

内容导航:

  • sql存储过程有啥用
  • sql server 存储过程 是什么意思
  • sql存储过程分页如何写呢
  • SQL存储过程的作用和优缺点
  • 一、sql存储过程有啥用

    Transact-
    SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。?
    存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
    存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
    由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。
    1、 存储过程的优点 A、 存储过程允许标准组件式编程
    存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。
    B、 存储过程能够实现较快的执行速度 如果某一操作包含大量的T-
    SQL语句代码,分别被多次执行,那么存储过程要比批处理的执行速度快得多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划。而批处理的T-
    SQL语句每次运行都需要预编译和优化,所以速度就要慢一些。 C、 存储过程减轻网络流量 对于同一个针对数据库对象的操作,如果这一操作所涉及到的T-
    SQL语句被组织成一存储过程,那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是多条SQL语句。从而减轻了网络流量,降低了网络负载。
    D、 存储过程可被作为一种安全机制来充分利用
    系统管理员可以对执行的某一个存储过程进行权限限制,从而能够实现对某些数据访问的限制,避免非授权用户对数据的访问,保证数据的安全。 ? 系统存储过程
    系统存储过程是系统创建的存储过程,目的在于能够方便的从系统表中查询信息或完成与更新数据库表相关的管理任务或其他的系统管理任务。系统存储过程主要存储在master数据库中,以“sp”下划线开头的存储过程。尽管这些系统存储过程在master数据库中,但我们在其他数据库还是可以调用系统存储过程。有一些系统存储过程会在创建新的数据库的时候被自动创建在当前数据库中。

    二、sql server 存储过程 是什么意思

    在使用 microsoft? sql server? 2000 创建应用程序时,transact-sql 编程语言是应用程序和 sql server
    数据库之间的主要编程接口。
    使用 transact-sql 程序时,可用两种方法存储和执行程序。
    可以在本地存储程序,并创建向 sql server 发送命令并处理结果的应用程序;也可以将程序在 sql server
    中存储为存储过程,并创建执行存储过程并处理结果的应用程序。
    sql server 中的存储过程与其它编程语言中的过程类似,原因是存储过程可以: 接受输入参数并以输出参数的形式将多个值返回至调用过程或批处理。
    包含执行数据库操作(包括调用其它过程)的编程语句。
    向调用过程或批处理返回状态值,以表明成功或失败(以及失败原因)。
    可使用 transact-sql execute 语句运行存储过程。
    存储过程与函数不同,因为存储过程不返回取代其名称的值,也不能直接用在表达式中。
    使用 sql server 中的存储过程而不使用存储在客户计算机本地的 transact-sql 程序的优势有: 允许模块化程序设计。
    只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。
    存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。
    允许更快执行。
    如果某操作需要大量 transact-sql 代码或需重复执行,存储过程将比 transact-sql 批代码的执行要快。
    将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。
    每次运行 transact-sql 语句时,都要从客户端重复发送,并且在 sql server 每次执行这些语句时,都要对其进行编译和优化。
    减少网络流量。
    一个需要数百行 transact-sql 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。
    可作为安全机制使用。
    即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。
    sql server 存储过程是用 transact-sql 语句 create procedure 创建的,并可用 alter procedure
    语句进行修改。
    存储过程定义包含两个主要组成部分:过程名称及其参数的说明,以及过程的主体(其中包含执行过程操作的 transact-sql 语句)。
    用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
    存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
    存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。
    在ORACLE中,若干个有联系的过程可以组合在一起构成程序包。
    存储过程是利用SQL Server所提供的Transact-SQL语言所编写的程序。
    Transact-SQL语言是SQL Server提供专为设计数据库应用程序的语言,它是应用程序和SQL Server数据库间的主要程序式设计界面。
    它好比Oracle数据库系统中的PL-SQL和Informix的数据库系统结构中的Informix- 4GL语言。
    这类语言主要提供以下功能,让用户可以设计出符合引用需求的程序:1)、变量说明2)、ANSI兼容的SQL命令(如Select,Update….)3)、一般流程控制命令(if…else…、while….)4)、内部函数存储过程(Stored
    Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。
    用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
    存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量 。
    同时,存储过程可以接收和输出参数、返回执行存储过程的状态值,也可以嵌套调用。
    优点: 存储过程的能力大大增强了SQL语言的功能和灵活性。
    存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的 运算。
    可保证数据的安全性和完整性。

    通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。

    通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。

    • 在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。
      这种已经编译好的过程可极大地改善SQL语句的性能。
      由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。
    • 可以降低网络的通信量。
    • 使体现企业规则的运算程序放入数据库服务器中,以便:# 集中控制。

    当企业规则发生变化时在服务器中改变存储过程即可,无须修改任何应用程序。

    企业规则的特点是要经常变化,如果把体现企业规则的运算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序工作量非常之大(修改、发行和安装应用程序)。
    如果把体现企业规则的运算放入存储过程中,则当企业规则发生变化时,只要修改存储过程就可以了,应用程序无须任何变化。
    缺点:1:调试麻烦,但是用 PL/SQL Developer 调试很方便!弥补这个缺点。
    2:移植问题,数据库端代码当然是与数据库相关的。
    但是如果是做工程型项目,基本不存在移植问题。
    3:重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。
    4:
    如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的。
    维护起来更加麻烦

    三、sql存储过程分页如何写呢

    答:CREATEPROCmyx_prPageRecordset@queryStrnvarchar(1000),@keyFieldnvarchar(200),@pageSizeint,@pageNumberintASBEGINDECLARE@sqlTextASnvarchar(4000)DECLARE@sqlTableASnvarchar(4000)SET@sqlTable=‘SELECTTOP‘+CAST((@pageNumber+1)@pageSizeASvarchar(30))+‘‘+@queryStrSET@sqlText=‘SELECTTOP‘+CAST(@pageSizeASvarchar(30))+‘‘+‘FROM(‘+@sqlTable+‘)AStableA‘+‘WHERE‘+@keyField+‘NOTIN(SELECTTOP‘+CAST(@pageNumber@pageSizeASvarchar(30))+‘‘+@keyField+‘FROM(‘+@sqlTable+‘)AStableB)‘EXEC(@sqlText)ENDGO核心代码DimstrsqlAsStringmyComm=Newd(“myx_prPageRecordset“,myConn)pe=(Newter(“@queryStr“,,1000))s(“@queryStr“).Value=“fromtbpageorderbyidDESC“(Newter(“@keyField“,,200))s(“@keyField“).Value=“[id]“(Newter(“@pageSize“,,1000))s(“@pageSize“).Value=(Newter(“@pageNumber“,,1000))s(“@pageNumber“).Value=myPage-1呵呵,执行几W条的代码只需150毫秒左右建立一个test(id,name,fid)向test添充几十条数据,使id=1,2,3,4………(即递增的integer),其他任意在T-
    sqlDebugger给改存储过程分别传递如下参数:@queryStr=fromtest@keyField=[ID]@pageSize=3@pageNumber=1问题出来了,看输出结果(注意id):idnamefid4kwklover25kwklover26kwklover2根据传入参数,我们的预期应该是:idnamefid1kwklover22kwklover23kwklover2下面是我参照小春的存储分页写的分页存储过程,可以解决上面的问题:CREATEProcedureprGetRecordByPage(@PageSizeint,–每页的记录条数@PageNumberint,–当前页面@QuerySqlvarchar(1000),

    部分查询字符串,如
    FromTestorderbyiddesc@KeyFieldvarchar(500))ASBeginDeclare@SqlTableASvarchar(1000)Declare@SqlTextASVarchar(1000)Set@SqlTable=‘SelectTop‘+CAST(@PageNumber@PageSizeASvarchar(30))+‘‘+@QuerySqlSet@SqlText=‘SelectTop‘+Cast(@PageSizeASvarchar(30))+‘From‘+‘(‘+@SqlTable+‘)AsTembTbA‘+‘Where‘+@KeyField+‘NotIn(SelectTop‘+CAST((@PageNumber-1)*@PageSizeASvarchar(30))+‘‘+@KeyField+‘From‘+‘(‘+@SqlTable+‘)ASTempTbB)‘Exec(@SqlText)EndGO

    四、SQL存储过程的作用和优缺点

    SQL存储过程放在SQL数据库中,1,因此在程序中调用的时候不必自己拼接sql语句。2,SQLSERVER会对存储过程进行预编译,因此速度快。3,在网络上不必传输冗长的SQL语句,而是直接调用存储过程的名字,因此可以加快速度当然,在一些外包软件开发中,是不允许使用存储过程的。因为对方不可以把数据库暴露给你,此时你只能使用SQL语句。不过国内的一些小型企业使用SQL存储过程还是很流行的。因为程序代码里不包含SQL语句,因此会数据库会相对安全一些。

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/121863.html

    (0)
    robot
    上一篇 2022-05-11
    下一篇 2022-05-11

    相关推荐

    • python中select的用法是什么

      在Python中,select()是一个用于多路复用的函数。它可以同时监视多个文件对象(包括套接字)的读写状态,当其中任何一个文件对象就绪(可读或可写)时,select()函数将返回该文件对象。select()函数的基本语法如下:read_list, write_list, error_list = select.select(inputs, outputs, exceptions, time

      2024-01-17
      0
    • C++中empty()函数的功能有哪些

      在C++中,empty()函数通常用于判断容器是否为空。具体功能包括:对于容器类(如vector, list, set等),empty()函数可以用来判断容器中是否有元素,如果容器为空则返回true,否则返回false。对于字符串类(如string),empty()函数可以用来判断字符串是否为空,如果字符串为空则返回true,否则返回false。对于队列类(如queue),empty()函数可

      2024-03-27
      0
    • 适合新手用的贴纸软件

      贴图软件可以让用户给自己想要贴图的照片加入一些不一样的图片,可以让照片更好看,同时还可以给用户的照片进行修图,或者使用一些特效,并且操作简单,很容易上手。适合新手用的贴纸软件:一、醒图免费版【点击查看】有非常多有趣的素材,还有很多强大的功能,包含各种方面的功能,可以满足大部分用户修图的需求,能够照片进行精细的修改,并且还能保留自然美,整体更协调。二、轻颜相机【点击查看】有很多的个性贴纸可以一键添加

      2024-02-15 技术经验
      0
    • 做网站需要买什么(做网站需要买什么笔记本)

      做网站需要买什么,做网站需要买什么笔记本内容导航:做网站需要准备什么做网站要具备什么条件做一个好网站要具备什么条件做月子需要买什么啊坐月子需要买什么啊建一个网站需要买什么一、做网站需要准备什么需要准备的企业资百料差不多也就以下五点:1、域名,就是您的网站预备用什么域名,国内般都是.com和.cn的;2、网站名称,就是企业给本身的网站起个名字

      2022-04-25
      0
    • mysql慢日志怎么监控和获取

      可以通过以下步骤来监控和获取MySQL慢日志:开启慢查询日志:在MySQL配置文件中设置慢查询日志参数,一般为slow_query_log = ON,并设置慢查询时间阈值,一般为long_query_time = 1,表示慢查询时间超过1秒的SQL语句会被记录到慢查询日志中。查看慢查询日志路径:在MySQL配置文件中查看慢查询日志的路径,一般为slow_query_log_file = /path

      2024-02-19
      0
    • cnzz代码如何(cnzz怎么用)

      cnzz代码如何,cnzz怎么用内容导航:怎样把cnzz的统计代码放到网站上怎么把cnzz流量统计工具的代码加进帝国cms的后台Topbox流量统计分析代码添加,和添加GA,cnzz代码一样的吗如何阻止cnzz的游戏视一、怎样把cnzz的统计代码放到网站上呵,没事的,这个很好学的,他们加入的那个script角本,是显示的,方法很简单

      2022-04-16
      0