创建用户自定义函数 SQL
//创建用户自定义函数------标量函数
create function dbo.bmrs(@bmh as int)
returns int
as
begin
declare @bmrs int
select @bmrs=count(工号) from 销售人员 where 部门号=@bmh
return @bmrs
end
go
exec sp_help 销售人员
go
//标量函数的调用
declare @bmrs int
select @bmrs=dbo.bmrs(2)
select '2号部门人数'=@bmrs
go
select '2号部门人数 '+convert(varchar(4),dbo.bmrs(3))
select 部门经理,部门名称,实际人数=dbo.bmrs(部门号) from 部门信息
go
select 部门经理,部门名称,实际人数=dbo.bmrs(部门号) from 部门信息 where 部门号=2
//创建内嵌表值函数
----------a.订单号,销售人员=b.姓名,客户=c.姓名,供应商=d.名称,a.数量,a.总金额
------------以部门名称作为输入参数,创建部门订单内嵌表值函数
select * from 部门信息
select * from 订单信息
select * from 客户信息
select * from 供应商信息
select * from 销售人员
go
----------创建内嵌表值函数
create function dbo.bmdd(@bmmc as varchar(10))
returns table
as
return( select a.订单号,销售人员=b.姓名,客户=c.姓名,供应商=d.名称,a.总金额,a.数量
from 订单信息 as a inner join 销售人员 as b on a.销售工号=b.工号 inner join 客户信息 as c
on a.客户编号=c.员工编号 inner join 供应商信息 as d on a.货品编码=d.编码 inner join 部门信息 as e
on b.部门号=e.部门号 where 部门名称=e.部门名称)
go
----------内嵌表值函数的调用
select * from dbo.bmdd('销售部')
--------------创建内嵌表值函数的语法格式
create function 函数所有者.函数名称(标量参数 as 标量参数数据类型)
returns table
as
return (select语句)
-----------创建视图的语法格式
create view 视图名 as select语句
----------------用create function语句创建函数。
函数名在数据库汇总必须唯一,用户定义函数可以有输入参数并返回值,但是没有输出参数。
create function 所有者.函数名(标量参数 as 标量数据类型)
returns 标量参数数据类型
as
begin
函数体
return 变量//标量表达式
end
----------多语句表值函数的返回值是表,有函数体,在函数体中可以使用表变量。
创建多语句表值函数语法格式:
create function [所有者名称.]函数名称(@参数名称 as 标量数据类型)
returns @表变量 table 表的定义
as
begin
函数体
return
end
go
说明:表(table)变量是一种特殊的数据类型,可用于函数、存储过程和批处理中,用于存储结果集以供以后处理。该数据类型主要用于临时存储一组行,这些行将作为表值函数的结果集返回。
table变量的行为类似于局部变量,其作用域为声明该变量的函数、存储过程或批处理,其生命周期在定义table变量的
函数、存储过程呢过和批处理结束时将自动清楚table变量。
表(table)变量的声明语法:declare @local_variable table(表的定义)
/*根据订单信息表查询得出每个销售人员所开的订单数。查询的结果包括销售人
员工号和订单数。下面,我们采用表变量的方式将查询的结果集保存下来,以便程序使用。*/
declare @ordernum
table(销售工号 int,
订单数 int)
---使用insert....select语句向表变量中插入记录
insert @ordernum
select 销售工号,订单数=count(销售工号) from 订单信息 group by 销售工号
select * from @ordernum
go
/*在market数据库中,创建一个多语句表值函数,它可以查询指
定部门每个销售人员的订单数,该函数接收输入的部门号,通过查询“订单信息”表返回销售人员的工号、姓名和订单数。*/
---创建多语句表值函数
create function dbo.info(@bmh as int)
returns @xsry table(工号 int primary key,
姓名 varchar(10),
订单数 int)
as
begin
declare @ordernum
table(销售工号 int,订单数 int)
insert @ordernum select 销售工号,订单数=count(销售工号) from 订单信息 group by 销售工号
insert @xsry select a.工号,a.姓名,b.订单数 from 销售人员 as a left join @ordernum as b on a.工号=b.销售工号
where a.部门号=@bmh
return
end
go
创建用户自定义函数 SQL的更多相关文章
- mysql 创建用户自定义函数
为了防止分号产生的中途输出,自己定义一个 分隔符,这里仿照mysql官方的例子:使用两个美元符号 $$ 作为分割符号,下面这段代码就是创建一个自定义mysql函数的原型了,可以在这个基础上修改,这样, ...
- mysql 创建用户自定义函数(转可运行)
set global log_bin_trust_function_creators = 1; -- 开启bin_log 复制 函数创建DROP FUNCTION IF EXISTS hello; - ...
- SQLServer之创建标量函数
创建标量函数注意事项 在 SQL Server 和 Azure SQL Database 中创建用户定义函数. 用户定义函数是接受参数.执行操作(例如复杂计算)并将操作结果以值的形式返回的 Trans ...
- 关系数据库SQL之可编程性函数(用户自定义函数)
前言 在关系型数据库中除了前面几篇基本的数据库和数据表操作之外,还提供了可编程性的函数.存储过程.事务.触发器及游标. 本文介绍的是函数. 函数分为两种: 系统函数 用户自定义函数 准备工作 这里以银 ...
- SQL Server用户自定义函数
用户自定义函数不能用于执行一系列改变数据库状态的操作,但它可以像系统 函数一样在查询或存储过程等的程序段中使用,也可以像存储过程一样通过EXECUTE 命令来执行.在 SQL Server 中根据函数 ...
- SQL Server UDF用户自定义函数
UDF的定义 和存储过程很相似,用户自定义函数也是一组有序的T-SQL语句,UDF被预先优化和编译并且尅作为一个单元爱进行调用.UDF和存储过程的主要区别在于返回结果的方式. 使用UDF时可传入参数, ...
- SQL之用户自定义函数
关于SQL Server用户自定义的函数,有标量函数.表值函数(内联表值函数.多语句表值函数)两种. 题外话,可能有部分朋友不知道SQL Serve用户自定义的函数应该是写在哪里,这里简单提示一下,在 ...
- Spark SQL 用户自定义函数UDF、用户自定义聚合函数UDAF 教程(Java踩坑教学版)
在Spark中,也支持Hive中的自定义函数.自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_date等 UDAF( ...
- SQL Server用户自定义函数(UDF)
一.UDF的定义 和存储过程很相似,用户自定义函数也是一组有序的T-SQL语句,UDF被预先优化和编译并且可以作为一个单元来进行调用. UDF和存储过程的主要区别在于返回结果的方式: 使用UDF时可传 ...
随机推荐
- Multivariate normal distribution | 多元正态分布
现在终于需要用到了.
- HBase Region 各个状态的转换
Region 各个状态的转换 HBase 维护了每个 region 的一个状态信息,并保存在 hbase:meta 中.hbase:meta 本身region的状态信息被持久化到 ZooKeeper. ...
- Node.js的缺陷
Node.js最大的优点是事件机制,一切皆在回调中触发(不阻塞).我想缺点或许有正在于此,方法没有返回值,而只能在回调中使用返回结果,会导致事件回调嵌套,代码结构很差. 在jQuery中有一套很好的机 ...
- form标签的 enctype属性
1.enctype的定义: enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码. 默认地,表单数据会编码为 "application/x-www-form-urlencod ...
- 函数, arguments对象, eval,静态成员和实例成员
函数创建: 3种创建函数的方式 * 直接声明函数 function funcName(/*参数列表*/){ //函数体 } * 函数表达式 var funcName = function(){ ...
- 注册COMDLG32.OCX方法
1.将下载的comdlg32.ocx文件拷贝到C:\Windows\SysWOW64(32位电脑为C:\Windows\System32)文件夹中. 2.按win+x打开快捷命令选项菜单: 再按“A” ...
- Saiku更改源代码实现默认查询一天的数据(十)
Saiku通过更改源代码实现默认查询前一天数据 saiku在本地进行的编译的方式前面已有教程说明,接下来就是更改原代码了 (从网上学得教程,目前只了解到获取最新一天的数据信息) 参考博客地址: htt ...
- Vuejs的$nextTick原理
本质: nextTick,本质上是一个异步API,表示当前同步流程执行完成后再调用传入的函数. 根据环境不同,异步API的实现可以分别通过: setTimeout(0), new Promise(), ...
- [SCOI2007]排列
看了看数据范围...我艹...爆搜可过? 等等,冷静,让我看一眼题解...我艹...真可过... emm...再冷静分析...emm...还是写状压吧... 这题主要的思路就是 f[i][j] 表示 ...
- c# 抽象类与接口【学习笔记】
最近一直在学着面向接口编程,总是会写出好多的接口然后继承,现在开始发现了一些好处,就是在一个方法里面使用另一个方法的时候, 用接口代替这个被使用的方法,可以减少代码的耦合,后期的扩展也方便,代码易于维 ...