SQL入门经典(九) 之自定义函数

UDF和存储过程很类似,用户自定义函数是一组有序的T-SQL语句,这些语句被预先优化和编译,并且可以作为一个单元来测试调用。UDF和存储过程的主要区别在于结果返回方式,为了能支持更多返回值,UDF比存储过程有跟多限制。

UDF基本语法:CREATE FUNCTION <function name> (<@parameter name> <data type>[default value][......n)

RETURNS  <返回类型>

AS  begin  /*代码*/  end

试一试最简单是UDF:

CREATE FUNCTION  fun_GetDateDIff(@startDate datetime,@endDate datetime)
returns int
AS
BEGIN
   return  datediff(month,@startDate,@endDate);
END

GO

select ProductID,sum(LineTotal) from Purchasing.PurchaseOrderDetail where dbo.fun_GetDateDIff(DueDate,getdate())=142 /**/  group by ProductID --查询前的142的数据

修改UDF:直接把CREATE 改为ALTER就可以了。UDF基本和存储过程差不多的。

这一章比较简单。不会写太多,下一篇讲事务和锁。感觉后面写的越来越吃力了。有点写不下的冲动了。

时间: 2024-10-12 07:05:28

SQL入门经典(九) 之自定义函数的相关文章

SQL入门经典(十) 之事务

事务是什么?事务关键在与其原子性.原子性概念是指可以把一些事情当作一个执行单元来看待.从数据库角度看待.他是指应该全部执行或者全部不执行一条或多条语句的最小组合.当处理数据时候经常确保一件事发生另一件事也随之发生.或者二件事都不发生.实际上可能达到程度是有几十件事情或者更多的事情都必须一起发生或者都不发生.来看一个一个经典事例.这个事例各大书籍讲事务都有.就是你去银行转帐给朋友.转了100元sql如下:你的帐号扣了100元,你朋友帐号加了100元.看起来很完美.其实有个BUG存在,你的帐号被扣1

SQL Server CLR 使用 C# 自定义函数

原文:SQL Server CLR 使用 C# 自定义函数 一.简介 Microsoft SQL Server 2005之后,实现了对 Microsoft .NET Framework 的公共语言运行时(CLR)的集成.CLR 集成使得现在可以使用 .NET Framework 语言编写代码,从而能够在 SQL Server 上运行,现在就可以通过 C# 来编写 SQL Server 自定义函数.存储过程.触发器等.我最初的目的是因为在 SQL Server 数据库中遇到数字的十进制与十六进制的

C 入门 第六节 自定义函数

/*//  1. 无参无返回值void hello()    {        printf("hello world!\n");    }//  2. 无参有返回值int peoplweCount(){        return 10;    }//  3. 有参有返回值int max(int a, int b)    {        return a > b ? a : b;    }//  4. 有参无返回值(打印一个数)void number(int a)    { 

SQL入门经典(一)之简介

今天是我第一天开通博客,也是我的第一篇博客.以后为大家带来第一篇关于学习技术性文章,这段时间会为大家带来是SQL入门学习.希望大家坚持读下去,因为学历有限.我也是初学者.语言表达能力不好和知识点不足,我写的不好,希望大家多多包涵.主要分享给那些想学SQL一个入门教程.主要是T-SQL语言为主.学完这些内容后你基本会数据库UDF.增删改查.存储过程.视图.规则.默认值等一些常用基本用法.高级部分现在不讨论. 结构化查询语言(Structured Query Language)简称SQL(发音:/?

sql 入门经典(第五版) Ryan Stephens 学习笔记 (第六,七,八,九,十章)

第六章: 管理数据库事务 事务 是 由第五章 数据操作语言完成的  DML ,是对数据库锁做的一个操作或者修改. 所有事务都有开始和结束 事务可以被保存和撤销 如果事务在中途失败,事务中的任何部分都不会被记录到数据库 控制事务: commit , rollback ,savepoint; 6.1 commit 在操作之前 需要 设置: set autocommit = 0 ;  // 否则所有的操作都是 自动提交的 commit: 用于把事务所做的修改保存到数据库,它把上一个commit 或 r

SQL入门经典(八) 之存储过程

存储过程(stored procedure)有时候称为sproc,它是真正的脚本-或者更准确的说,他是批处理(batch)-它存储于数据库中,而不是淡出的文件中.无论如何,这个比较并不是很确定.存储过程有输出参数,输入参数已及返回值等.而脚本不会有这些内容. 存储过程基本语法:CREATE PROCEDURE|PROC <sproc name> [<parameter name> <data type> [VARYING][<default value>]

SQL入门经典(二) 之数据库基本查询、添加、更新和删除

使用SQL查询: SQL查询基本语法: SELECT [ALL|DISTINCT]  [TOP (<expression>) [PERCENT] [WITH TIES] ] <column list> [FROM <source table(s)/view>] [WHERE <restrictive condition>] [GROUD BY<column name or expression using a column in the SELECT

SQL入门经典(六) 之视图

视图实际上就是一个存储查询,重点是可以混合和匹配来自基本表(或其他视图)的数据,从而创建在很多方面象另一个普通表那样的起的作用.可以创建一个简单的查询,仅仅从一个表(另一个视图)选择几列或几行,而忽略其他行或列,或者也可以创建一个复杂查询.连接几个表查询,使得这些连接查询看起来更像一个表. 对视图的使用往往不是过多或者就是不够-很少是正好的.学完视图应当可以使用视图达到以下的目的: 1.为终端用户减少明显的数据复杂性. 2.防止敏感列被选择,但是仍然提供对其他数据访问. 3.给数据库添加额外的索

SQL入门经典(五) 之键和约束

这一篇博客主要讲键的创建,约束的创建.修改对象和删除对象. 主键:主键是每行的唯一标识符,必须包含唯一值(因此不能为NULL).由于主键在关系中数据库的重要性,因此它是所有键和约束中最重要的.一个表最多可以有一个主键.很少不需要主键的表.主键声明具有唯一性.常用有identity自动增长值和GUID.主键是唯一标识值.如果客户操作一个没有主键的表.连续添加2次一样数据.你怎么删除.删除总是2条一条删除.我们接着上篇博客. 下面创建一个主键表: USE panda GO --转为panda数据库操