存储过程的简单使用(sqlServer)

这篇具有很好参考价值的文章主要介绍了存储过程的简单使用(sqlServer)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一丶什么是存储过程

T-SQL中的存储过程,非常类似于net语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。

  1. 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
  2. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
  3. 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。
  4. 同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。

二丶优点

1、存储过程允许标准组件式编程
存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句。
而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。

2、存储过程能够实现较快的执行速度
如果某一操作包含大量的T-SQL语句代码,分别被多次执行,那么存储过程要比批处理的执行速度快得多。
因为存储过程是预编译的,在首次运行一个存储过程 时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划。
而批处理的T-SQL语句每次运行都需要预编译和优化,所以速度就要慢一些。

3、存储过程减轻网络流量
对于同一个针对数据库对象的操作,如果这一操作所涉及到的T-SQL语句被组织成一存储过程,
那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是多条SQL语句。
从而减轻了网络流量,降低了网络负载。

4、存储过程可被作为一种安全机制来充分利用
系统管理员可以对执行的某一个存储过程进行权限限制,从而能够实现对某些数据访问的限制,避免非授权用户对数据的访问,保证数据的安全。

三丶缺点

1、运行速度
对于很简单的sql,存储过程运行速度没有什么优势。

2、代码可读性差,不易于维护
存储过程的开发调试要比一般程序困难(老版本DB2还只能用C写存储过程,更是一个灾难)。
代码可读性差,不易于难维护。

3、可移植性差
由于存储过程将应用程序绑定到SQLServer,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。
如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于RDBMS的中间层中可能是一个更佳的选择。文章来源地址https://www.toymoban.com/news/detail-523878.html

四丶简单使用

--基本语法
declare @d int --属性声明 
set @d=1 --赋值
if @d=1  --判断
begin 
	print '正确' --输出
end
else begin 
	print '错误'
end
--基本语法
declare @today int			--属性声明
declare @week varchar(50)   --属性声明
set @today=3				--属性赋值
set @week= case				--判断
	when @today=1 then '周一'
	when @today=2 then '周二'
	when @today=3 then '周三'
	when @today=4 then '周四'
	when @today=5 then '周五'
	when @today=6 then '周六'
	when @today=7 then '周天'
	else '错误'
end
print @week	--输出
--基本语法(循环)
declare @i int --属性声明
set @i=1	   --赋值
while @i<100   --循环
begin
	set @i=@i+1
	print @i
end
--创建返回结果集的无参存储过程
if(OBJECT_ID('proc_get_student','P') is not null) --判断是否存在
drop proc proc_get_student
go
create proc proc_get_student --创建存储过程
as
select * from TEST_USER --结果集

--存储过程调用
exec proc_get_student
--修改存储过程
alter proc proc_get_student
as
select * from TEST_USER where BH='A01' --修改返回结果集

--存储过程调用
exec proc_get_student
--带通配符存储过程
if(OBJECT_ID('proc_findDataByName','P') is not null) --判断是否存在
drop proc proc_findDataByName
go
create proc proc_findDataByName(@name varchar(50)='%张%', @nextName varchar(50)='%李%') --定义入参并默认值
as
select * from TEST_USER where XM like @name or XM like @nextName  --输出结果集
go

--调用存储过程
exec proc_findDataByName '%张%','%王%'
--创建返回结果集的有参存储过程
if(OBJECT_ID('proc_find_student','P') is not null) 
drop proc proc_find_student
go
create proc proc_find_student(@startAge int, @endAge int)
as 
select * from TEST_USER where NL between @startAge and @endAge
go

exec proc_find_student 10,100
--带输出参数存储过程
if(OBJECT_ID('proc_getStudentRecord','P') is not null) 
drop proc proc_getStudentRecord 
go
create proc proc_getStudentRecord(
	@id varchar(50),
	@name varchar(50) out,
	@age int output)
as
select @name=XM,@age=NL from TEST_USER where BH=@id and NL<@age
go

declare @id varchar(50),
@name varchar(50),
@age int;
set @id='B01'
set @name='李四'
set @age=30
exec proc_getStudentRecord @id,@name out,@age output;
select @name as XM,@age as NL;

到了这里,关于存储过程的简单使用(sqlServer)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用SqlSugar连接多个数据库(sqlserver,sqlite,mysql)

        有时候,一个项目只有一个数据库,比如只有SQLite,或者MySQL数据库,那么我们只需要使用一个固定的数据库即可。但是一个项目如果写好了,有多个用户使用,但是多个用户使用不同的数据库,这个时候,我们就需要把软件设计成可以连接多个数据库的模式,用什么数

    2023年04月08日
    浏览(43)
  • python使用odbc连接db2、sqlserver数据库

    先介绍安装odbc驱动,如果已安装跳过次环节 参考链接:linux环境odbc驱动安装 - 哔哩哔哩 也可参考微软官网(Windows驱动也有介绍):安装 Microsoft ODBC Driver for SQL Server (Linux) - ODBC Driver for SQL Server | Microsoft Learn ODBC Driver是一种动态链接库 (DLL),支持 ODBC 的应用程序(如 Excel)可

    2024年02月10日
    浏览(31)
  • .NET Core/.NET6 使用DbContext 连接数据库,SqlServer

    安装以下NuGet包 Microsoft.EntityFrameworkCore.SqlServer:SQL server 需要添加包 Microsoft.EntityFrameworkCore.Tools Newtonsoft.Json:用于Json格式转换 创建一个实体类来表示数据库表。在项目中创建一个名为Customer.cs的文件,并添加以下代码 创建一个数据库上下文类,用于定义实体类和数据库连接

    2024年02月07日
    浏览(39)
  • 【SQLServer】sqlserver数据库导入oracle

    将sqlserver数据库导入到oracle 实用工具: SQL Server Management Studio 15.0.18424.0 SQL Server 管理对象 (SMO) 16.100.47021.0+7eef34a564af48c5b0cf0d617a65fd77f06c3eb1 Microsoft Analysis Services 客户端工具 15.0.19750.0 Microsoft 数据访问组件 (MDAC) 10.0.19041.2486 Microsoft MSXML 3.0 4.0 6.0 Microsoft .NET Framework 4.0.30319.42000 操

    2024年02月09日
    浏览(42)
  • win11 下 SQL2008数据库 SQLServer Management Studio 无法使用的问题

    系统升级到win11后,SqlServer2008数据库的管理工作SQLServer Management Studio 点击后没反应。经过测试数据库服务正常,只是管理工具无法使用。单独安装一个高版本的管理工具,问题解决。 我是下载的Sql Management Studio,链接如下:https://download.microsoft.com/download/8/a/8/8a8073d2-2e00-472b

    2024年02月11日
    浏览(36)
  • 数据库实训sqlserver

    一、数据库设计题 1、以“library”为名称创建一个数据库。该数据库中包含一个主数据文件tsdata.mdf,存放路径为“d:data”;一个事务日志文件tslog.ldf,存放路径为“d:data”。其他设置自定。  2、在上题创建好的数据库中,按如下要求创建三张表。 表1 书籍表:用来存储书

    2024年02月09日
    浏览(35)
  • SQLServer 数据库之锁

    SQL Server 数据库支持多个用户同时访问数据库,但当用户同时访问数据库时,就会造成 并发问题 ,锁的机制能很好地解决这个问题,保证数据的完整性和一致性; SQL Server 自带锁机制,若是简单的数据库访问机制,完全能满足用户的需求;但对于数据完全与数据完整性有特殊

    2024年02月13日
    浏览(39)
  • sqlserver数据库错误码

    错误 严重性 是否记录事件 说明 -2 超时时间已到。 超时时间在操作完成或服务器没有响应之前已过。 (Microsoft SQL Server,错误: -2)。 -1 在建立与服务器的连接时出错。 连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接,这可能会导致此失败。 (提供程序:

    2024年02月05日
    浏览(79)
  • idea连接Sqlserver数据库报错:驱动程序无法使用安全套接字层(SSL)加密建立到SQL

    com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法使用安全套接字层(SSL)加密建立到SQL Server的安全连接。错误:“客户端首选项[TLS12]不接受服务器选择的协议版本TLS10”。 使用idea连接Sqlserver数据库,然后想用MybatisX插件生产代码 1、建立连接 填写数据库信息 测试连接报错

    2024年02月07日
    浏览(51)
  • Python连接SQLserver数据库

    前进四的状态出发! 学习Python 连接 数据库 解决问题: 1:如何连接数据库 2:如何进行简单查询 3:如何将查询中的中文乱码给修复 4:如何进行插入,更新,删除 主要在pymssql.connect 中添加charset = ‘cp936’ 原因:因为字符串字段类型为:varchar,造成读取数据乱码。 方法一的缺点: 如果

    2024年02月02日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包