技术开发 频道

SQL Server数据库编程基本语法汇总

  八、自定义函数

  函数的分类:

  1)标量值函数

  2)表值函数

          a:内联表值函数

          b:多语句表值函数

  3)系统函数

  --新建标量值函数

  
create function FUNC_Sum1

  (

  
@a int,

  
@b int

  )

  
returns int

  
as

  
begin

  
return @a+@b

  
end

  
--新建内联表值函数

  
create function FUNC_UserTab_1

  (

  
@myId int

  )

  
returns table

  
as

  
return (select * from ST_User where ID<@myId)

  
--新建多语句表值函数

  
create function FUNC_UserTab_2

  (

  
@myId int

  )

  
returns @t table

  (

  
[ID] [int] NOT NULL,

  
[Oid] [int] NOT NULL,

  
[Login] [nvarchar](50) NOT NULL,

  
[Rtx] [nvarchar](4) NOT NULL,

  
[Name] [nvarchar](5) NOT NULL,

  
[Password] [nvarchar](max) NULL,

  
[State] [nvarchar](8) NOT NULL

  )

  
as

  
begin

  
insert into @t select * from ST_User where ID<@myId

  
return

  
end

  
--调用表值函数

  
select * from dbo.FUNC_UserTab_1(15)

  
--调用标量值函数

  
declare @s int

  
set @s=dbo.FUNC_Sum1(100,50)

  
print @s

  
--删除标量值函数

  
drop function FUNC_Sum1

  谈谈自定义函数与存储过程的区别:

  一、自定义函数:

  1. 可以返回表变量

  2. 限制颇多,包括

          ·不能使用output参数;

          ·不能用临时表;

          ·函数内部的操作不能影响到外部环境;

          ·不能通过select返回结果集;

          ·不能update,delete,数据库表;

  3. 必须return 一个标量值或表变量

  自定义函数一般用在复用度高,功能简单单一,争对性强的地方。

  二、存储过程

  1. 不能返回表变量

  2. 限制少,可以执行对数据库表的操作,可以返回数据集

  3. 可以return一个标量值,也可以省略return

  存储过程一般用在实现复杂的功能,数据操纵方面。

0
相关文章