php server自定义函数,php:SQL Server用户自定义的函数种类详解

关于SQL Server用户自定义的函数,有标量函数、表值函数(内联表值函数、多语句表值函数)两种。

题外话,可能有部分朋友不知道SQL Serve用户自定义的函数应该是写在哪里,这里简单提示一下,在Microsoft SQL Server Managerment Studio里面,展开具体需要创建SQL Server用户自定义函数的数据库(即每个用户自定义函数只针对具体的一个数据库有用),然后找到可编程性选项,再展开找到函数选项,在具体的函数选项里面可参照下图的方式鼠标右键选择来添加。

8069b74643a84aaee136d11350c39012.gif

所谓标量函数简单点来讲就是返回的结果只是一个标量,对于我来讲,返回的结果就是一种类型的一个值。

写法如下:CREATE FUNCTION

(

-- Add the parameters for the function here

)

RETURNS

AS

BEGIN

-- Declare the return variable here

DECLARE

-- Add the T-SQL statements to compute the return value here

SELECT =

-- Return the result of the function

RETURN CREATE FUNCTION GetSum

(

@firstNum int,

@secondNum int

)

RETURNS int

AS

BEGIN

-- Declare the return variable here

DECLARE @result int

-- Add the T-SQL statements to compute the return value here

SELECT @result=@firstNum+@secondNum

-- Return the result of the function

RETURN @result

题外话:我们来看看上面的写法,对于SQL Server来讲,我们声明一个变量的方式是用CREATE FUNCTION GetSum

(

@firstNum int,

@secondNum int

)

如果没有参数,则只要保留括号即可。跟我们理解的函数写法一致。CREATE FUNCTION GetSum

(

)

对于返回方式,这跟我们编程的方式又不大一样。SQL Server函数的返回类型并不放在函数名前面,而是函数名括号的后面。而且函数的返回类型需要用到返回关键字RETURNS,而不是RETURN。

对于函数来讲,当然也会有所谓的函数体。标量函数也一样。它的函数体是包含在:AS

BEGIN

-- 函数体

END

对于需要在函数体里面声明变量的话,则需要使用到DECLARE关键字进行声明。函数体内的返回才是关键字RETURN。

好了,标量函数的例子也举完了,要存到数据库里面,还需要点击Microsoft SQL Server Management Studio工具里的执行操作。这样之后,就可以在查询窗口里面跟查询表数据一样来查询结果了。

使用方式好懂吧,但是需要注意的是[dbo]这个对象名在不能省,[GetSum]函数后面可也别少了()。说来也奇怪,对于表值函数来说,对象名[dbo]倒是不写也可以正确执行。select [dbo].[GetSum]()

相对于标量函数只返回一个标量值,内联表值函数返回的是表数据。当然罗,表数据就是Table类型。

写法如下:CREATE FUNCTION

(

-- Add the parameters for the function here

,

)

RETURNS TABLE

AS

RETURN

(

-- Add the SELECT statement with parameter references here

SELECT 0

)

GOCREATE FUNCTION [GetMoreThanSalary]

(

@salary int

)

RETURNS TABLE

AS

RETURN

(

SELECT [FName],[FCity],[FAge],[FSalary] FROM [Demo].[dbo].[T_Person] Where [FSalary] > @salary

)

题外话:标量函数上面提过的内容,这里就不重复了。内联表函数返回的表结构由函数体内的SELECT语句来决定。

对于标量函数来讲,函数体是包含在如下结构中。AS

BEGIN

-- 函数体

END

但是对于内联表值函数来讲,函数体的结构则是如下的方式。内联表值函数只执行一条SQL语句后返回Table结果。AS

RETURN

-- 函数体

END

执行表值函数的方式如下:select [FName],[FCity],[FAge],[FSalary] from [dbo].[GetMoreThanSalary](8000)

可以看得出,这种执行方式就跟普通表的执行方式一样了。表值函数其实相当于存储在内存空间里面的一张虚拟表。

多语句表值函数跟内联表值函数都是表值函数,它们返回的结果都是Table类型。多语句表值函数顾名思义,就是可以通过多条语句来创建Table类型的数据。这里不同于内联表值函数,内联表值函数的返回结果是由函数体内的SELECT语句来决定。而多语句表值函数,则是需要指定具体的Table类型的结构。也就是说返回的Table,已经定义好要哪些字段返回。所以它能够支持多条语句的执行来创建Table数据。CREATE FUNCTION

(

-- Add the parameters for the function here

,

)

RETURNS

TABLE

(

-- Add the column definitions for the TABLE variable here

,

)

AS

BEGIN

-- Fill the table variable with the rows for your result set

RETURN

END

GOALTER FUNCTION DemoFun

(

)

RETURNS

@result TABLE

(

name nvarchar(20),

city nvarchar(20),

age int,

salary int

)

AS

BEGIN

-- Fill the table variable with the rows for your result set

insert into @result(name, city, age, salary)

select FName,FCity,FAge,FSalary from dbo.T_Person where FSalary>8000

insert into @result(name, city, age, salary) values

('测试','China', 1, 0)

RETURN

END

GO

题外话:可以看得出,多语句表值函数的返回结果是定义好表结构的虚拟表。这又跟标量函数一样了吧,只不过标量函数是返回一种类型的标量值而已。而且在多语句表值函数里面,你也会发现最后一句是RETURN。告诉执行程序,多语句表值函数已经执行完成。函数体结构跟标量函数的结构一样。对于类型放在变量后面这种方式确实需要好好转换一下观念。RETURNS

TABLE

(

-- Add the column definitions for the TABLE variable here

,

)

内容倒是不多,但是要熟练使用的话,还是需要在项目中多加使用才行。网上有一些网友总结出来的常用自定义函数大家可以收集积累,就像做项目一样,好的方法要形成所谓的开发库,帮助我们在下一个项目中复用。节省我们的开发时间,提高我们的工作效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vlan为什么能隔离广播域_路由交换技术-VLAN原理及配置

VLAN原理及配置1. 背景网络中计算机的数量越来越多,传统的以太网开到面临冲突严重,广播泛滥及安全性无法保障等问题VLAN(virtual local area network)即虚拟局域网,是将一个物理的局域网在逻辑上划分为多个广播域的技术,通过在交换…

刀片 显卡 排行_AMD发布RadeonRX6000系列游戏显卡 4599元起

10月30日消息,据国外媒体报道,AMD日前发布了Radeon RX 6000系列游戏显卡,该系列显卡包括AMD Radeon(镭龙) RX 6800显卡和RX 6800 XT显卡,以及新旗舰RX 6900 XT显卡。AMD Radeon RX 6000系列显卡(图片来自AMD官网)AMD Radeon RX 68…

ecshop 模板 php代码,ecshop不能在模板文件.dwt和.lbi中直接添加php代码的解决方法...

ecshop不能在模板文件.dwt和.lbi中直接添加php代码了,为什么呢?因为直接在模板中加入php函数和代码,没有经过过滤,容易造成安全隐患。程序源码安全是比较重要的。不过如果有朋友希望能在模板文件中直接加入.dwt和.lbi文件&#xf…

python 随机_python1到3秒随机延时入坑python 心情舒畅

一开始只是看到一篇微信上的推送,讲的是用python做爬虫,爬取教务网上的成绩计算绩点,刚好做到一个需要做爬虫的项目,就看了看,觉得python很好玩,而且好像代码量比较少的样子(没错就是想偷懒。。。)刚好java…

等保2.0安全管理制度对比_一手资料!等保2.0云计算安全与风险评估

一、等保2.0对云计算发展提出“新要求”与等保1.0的标准体系相比,等保2.0在适用性、时效性、易用性、可操作性上得到进一步扩充和完善,以适应云计算、物联网、工业控制系统等新技术的发展。如下表给出了等保2.0发生的重要变化。针对等保2.0标准提出的新要…

java什么是类和对象,Java类和对象的概念

Java是一门面向对象的编程(Object Oriented Programming, OOP)语言,面向对象是相对于面向过程而言。那么什么是面向对象,什么又是面向过程呢?面向过程——步骤化面向过程就是分析出实现需求所需要的步骤,通过函数一步一步实现这些…

mt4 指标 涨跌幅 颜色k线_通达信精选指标——彩色K线指标

通达信精选指标——彩色K线指标VAR1:LLV(L,10); VAR2:HHV(H,25); 趋势:EMA((C-VAR1)/(VAR2-VAR1),10); AA:趋势>REF(趋势,1); BB:趋势<REF(趋势,1); 买入:DRAWICON(CROSS(AA,BB),L-0.1,23); 卖出:DRAWICON(CROSS(BB,AA),H0.1,15); {红} STICKLINE(AA,C,OPEN,3.5,0),COLOR…

matlab如何建立时间温度曲线,matlab如何绘时间曲线?

2007-02-12针对春夏秋冬四季的气候特点&#xff0c;应该如何进补四季的饮食宜忌中国古代医学家在漫长的生活实践中&#xff0c;逐步体会到人与自然界存在着非常密切的关系。自然界一年四季的变化&#xff0c;直接影响着人体的生理功能和病理变化&#xff0c;这就是“天人相应”…

python文件writelines_python 写文件write(string), writelines(list)

1.write(sting)>>> fopen(somefile-11-4.txt,w)>>> f.write(this\nis\nhaiku) #write(string)>>> f.close()>>>>>> fopen(somefile-11-4.txt,r)>>> f.read() #在这里直接f.read()读出的是不换行的一段字符。this\nis\nh…

erp系统原理和实施第五版pdf_【图片】生产制造企业ERP系统选型及实施“避坑”指南!【企业管理软件吧】...

随着企业经营环境的变化、信息技术的不断发展&#xff0c;基于ERP系统的信息化管理模式必将朝着更加科学化、集成化、智能化、网络化的方向发展。实施ERP是一场“变革”&#xff0c;那也就必然存在着失败的可能。对于众多制造企业而言&#xff0c;在ERP系统应用方面需要进一步加…

tsp matlab,五个城市的TSP问题MATLAB程序.doc

五个城市的TSP问题&#xff0c;距离矩阵为&#xff1a;01015621008139158020156132005291550设初始温度为10&#xff0c;结束温度为0.7&#xff0c;则程序如下&#xff1a;d[0, 10, 15, 6, 2;10, 0, 8, 13, 9;15, 8, 0, 20, 15;6, 13, 20, 0, 5;2, 9, 15, 5, 0];t010; tf0.7;[f…

python挑选以元音字母开头的单词_帮我总结一下,元音字母开头但是读音是辅音的英语单词例如uniform看上去应该是anuniform但事实是auniform的...

什么情况下英语单词加ing或双写加ing?2011-7-12 09:49 提问者&#xff1a;xycg5ydhyd | 浏览次数&#xff1a;1713次2011-7-12 09:52 最佳答案 1. 首先了解一下“闭音节”的基本知识&#xff1a;以辅音结尾的音节称为“闭音节”&#xff0c;如果这个闭音节在单词里是重读的&am…

检测电脑硬件的软件_【软件分享】PowerDVD | PotPlayer | AIDA64

PowerDVD软件介绍&#xff1a;PowerDVD是一款知名的蓝光影音播放软件&#xff0c;支持8K超清、4K蓝光与HDR影像及VR360影片播放。全方位支持播放多种热门影音格式&#xff0c;包括影片、光碟、ISO 档案以及相片&#xff0c;无论是在 PC 或 TV 设备播放都没问题。搭载独家TrueTh…

php怎样查看视频播放的进度条,H5中视频与音频标签和进度条如何使用

这次给大家带来H5中视频与音频标签和进度条如何使用&#xff0c;H5中视频与音频标签和进度条使用的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。最近项目中使用Html5的video和audio标签来在线播放视频和音频文件&#xff0c;但是遇到个奇葩的问题&am…

sqlserver如何从周一计算周_纯零基础,花10周时间,完全搞定Python,有没有可能?...

最简单适合小白练手的 10 个Python小项目&#xff0c;十天就能搞定Python。今天我推荐大家一本书&#xff1a;《面向零基础的Python小项目》&#xff0c;如果你集中精力&#xff0c;花10周&#xff0c;也就是两个半月时间&#xff0c;搞定Python&#xff0c;真的不再是一句空谈…

cannot load php5,Cannot load php5apache2_4.dll into server解决办法

我们正在装置好Apache,但装置PHP设置装备摆设完成以后,再次启动apache的时间涌现了毛病 the requested operation has failed; Apache没法启动,检察Ap]一.原因1:我们在安装好Apache服务器,一开始正常,但安装PHP配置完成之后,再次启动apache的时候出现了错误 the requested oper…

python tkinter库 密码实时显示_Python3 tkinter基础 Entry show textvariable 密码输入框

Python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4Conda : 4.5.11typesetting : Markdowncode"""Author : 行初心Date : 18-10-1Blog : www.cnblogs.com/xingchuxinGitee : gitee.com/zhichengjiu"""from tkinter import *def main(…

graphics 位深度_热门上海乐家人才公寓深度解析又是一个神

热门上海乐家人才公寓深度解析又是一个神提前来电预约看房可售楼处员工优惠5000元到20000元&#xff0c;免费专车接送/自驾报销路费&#xff0c;并可售楼处员工价格优惠&#xff01;老带客户带新客户&#xff0c;还可奖励iPhonePro&#xff0c;新客户有更多优惠&#xff01;更多…

JAVA头部声明异常,Java 异常详解

一.异常与错误的区别再讲异常之前我们就应该要知道异常和错误的区别Error类和Exception类的父类都是throwable类&#xff0c;他们的区别是&#xff1a;Error类一般是指与虚拟机相关的问题&#xff0c;如系统崩溃&#xff0c;虚拟机错误&#xff0c;内存空间不足&#xff0c;方法…

python的特点及应用-python有什么特性和劣势?老男孩python入门

人人都知道&#xff0c;Python是一门高级的编程语言&#xff0c;涉及领域广泛&#xff0c;应用范围多&#xff0c;薪资待遇也是非常不错的&#xff0c;那么Python有哪些优缺点&#xff0c;你了解吗?接下来老男孩教育为大家汇总介绍一下。 Python语言的优点介绍&#xff1a; 1、…