首页 > 数据库 >SQL server 存储过程与函数

SQL server 存储过程与函数

时间:2024-10-10 10:19:46浏览次数:3  
标签:存储 函数 age usp ssex server SQL test

一、SQL的存储过程:

存储过程其实就是一系列SQL语句的集合体,我们可以理解为一个封装单元,这个单元可以有出入参数,也可以没有。我们举几个简单的例子:

(1)无入参无出参的存储过程:

create proc  usp_test 
as 
update stu set  ssex='0' where  ssex=''
return 

exec  usp_test

(2)无入参有出参的存储过程:

alter proc  usp_test 
as 
update stu set  ssex='0' where  ssex=''
select * from stu where  ssex='0' 
return 

exec  usp_test

(3)有入参无出参的存储过程:

alter proc  usp_test 
@age  int 
as 
update stu set  ssex='1' where  sage>=@age 
return 

exec usp_test 20

(4)有入参有出参的存储过程:

alter proc  usp_test 
@age  int 
as 
update stu set  ssex='1' where  sage>=@age
select * from stu where  ssex='1' 
return 

exec usp_test 20

综合以上几个例子,我们能看到存储过程的创建、修改基本格式,当使用入参时怎么更新和返回数据等,其实再复杂的存储过程,都是由一条条简单的语句集合而成的。要理解存储过程,首先心理上不要有犯难和逃避,不能一看到代码多了就扭头不想理,正视它你才能搞定它。

二、函数

函数和存储过程有很大的相似性,也是一堆代码的集合,也有出入参

计算年龄的函数:

 CREATE function age_cs 
 (@ksrq  date,
 @jsrq  date)
 returns VARCHAR (16) 
as
begin
declare @days int ,@year int,
        @day int,@age  VARCHAR (16) 
select @days=datediff(day,@ksrq,@jsrq)
select @year=@days/365
select @day=@days%365

select @age= convert(varchar(3),@year)+'岁'
             +convert(varchar(3),@day)+'天'
return(@age)
 end

解析:

(1)函数的入参必须用括号包住,定义完入参以后紧接着就需要定义返回的参数类型,正文部分必须用begin...end包裹住;

(2)定义了四个变量:@days总天数, @year年数,@day天数,@age输出的年龄。

先用datediff函数算出总天数,然后年数等于总天数除以365得到的整数,因为两个字段都是int型的,所以直接除下来不会有小数。

再用总天数%365得到余天数,注意%是取余的意思。

最后我们再把算出来的年龄,拼接起来赋值给@age。

(3)用return(@age) 输出结果。

总结:

(1)存储过程和函数都可以将一段SQL语句进行封装,这样大大的方便了实际使用时候的调用步骤;

(2)存储过程里面可以嵌套存储过程,也经常会调用各种函数;

(3)函数里面可以调用其他函数,但是一般不嵌套存储过程;

(4)上面例子中的函数,也可以改写成存储过程,但是函数使用起来要方便的多,因为函数可以直接用select联用,但是存储过程只能用exec执行。

标签:存储,函数,age,usp,ssex,server,SQL,test
From: https://blog.csdn.net/csdn_wzq/article/details/142814515

相关文章

  • SQL Server 基础查询语句
    摘要在SQLServer中,查询语句是数据库管理员和开发人员最常用的工具之一,用于从数据库中提取、筛选和排序数据。以下是一些SQLServer查询语句的详细说明和示例:1、SELECT语句:这是最基本的查询语句,用于从一个或多个表中选择数据。例如,SELECT*FROMtable_name;将返回表中......
  • Django替换sqlite默认数据库到mysql的一系列操作
    将这部分注释掉:DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3','NAME':BASE_DIR/'db.sqlite3',}} 并替换为:DATABASES={'default':{......
  • MySQL事务、索引、数据恢复和备份
    1事务1.1事务介绍事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。就比如:张三给李四转账1000块钱,张三银行账户的钱减少1000,而李四银行账户的钱要增加1000。这一组......
  • mysql占用内存过大问题排查
    如果MySQL占用内存过高,可以按照以下步骤进行排查:一、检查MySQL配置参数查看 innodb_buffer_pool_size:这个参数决定了InnoDB存储引擎缓冲池的大小,它会占用大量内存。如果设置得过大,可能导致内存占用过高。可以通过查询 SHOWVARIABLESLIKE'innodb_buffer_pool_size......
  • 基于SpringBoot+MySQL+SSM+Vue.js的电影票信息管理系统(附论文)
    获取见最下方名片获取见最下方名片获取见最下方名片演示视频基于SpringBoot+MySQL+SSM+Vue.js的电影票信息管理系统(附论文)技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot......
  • 基于SpringBoot+MySQL+SSM+Vue.js的二手家电管理系统(附论文)
    获取见最下方名片获取见最下方名片获取见最下方名片演示视频基于SpringBoot+MySQL+SSM+Vue.js的二手家电管理系统(附论文)技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot文......
  • 【ClickHouse 表引擎&SQL操作&副本&分片集群 02】
    一、表引擎表引擎决定了如何存储表的数据。类似mysql的引擎InnoDB,MyISAM数据的存储方式和位置,写到哪里以及从哪里读取数据一般的引擎都存储在本地的磁盘,clickhouse存储的位置在:/var/lib/clickhouse -->其中data存储数据,metadata存储建表语句支持那些查询以及如何支持并......
  • 视频汇聚平台EasyCVR支持云端录像丨监控存储丨录像回看丨录像计划丨录像配置
    EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。平台以其强大的视频处理、汇聚与融合能力,在构建视频监控系统中展现出了独特的优势。EasyCVR视频汇聚平台可接入传统监控行业中高清网络摄像机的RTSP直播流,及RTMP、HTTP-FLV、HLS(......
  • 记宝塔面板MySQL启动失败问题之解决
    检查错误日志登录到宝塔面板。前往 软件管理 -> 数据库 ->选择对应的MySQL版本-> 查看日志。查看最近的错误信息,通常会给出启动失败的具体原因。检查MySQL配置文件配置文件通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf。确保配置文件中的设置正确无误,例如数......
  • 记一次处理达梦慢SQL问题
     --问题SQL(前提:ia_ledger_b表存在src_bill_row_id索引,字段类型为字符串;voucher_saleinvoicedetail为整形)uorders.voucher_saleinvoicedetailaleftjoinfieia.ia_ledger_bdon--a.id=d.src_bill_row_id调整前......