sql表值函数与标量值函数的区别

光听名字就可以知道区别了喽,创建的方法和整体结构都大体相同,都少不了函数名,函数的形参,返回值等这些

表值函数返回的是一张表结果,就和一个select查询语句一样,只不过里面带入了参数或者很复杂。

标量值函数返回的只是一个值。


一、表值函数(返回一张表结果)

下面是一个带输入参数的表值函数

示例如下:

CREATE function [dbo].[fn_PM_Common_SplitIds](
	@ids varchar(8000),
	@split varchar(1)
)
	returns @idsTable table(sort int,id nvarchar(200))
as 
begin
	declare @x int
	declare @sort int
	declare @tempIds nvarchar(4000)
	
	declare @idLen int
	declare @idValue nvarchar(200)
	
	set @tempIds = ltrim(rtrim(@ids))
	set @sort = 0
	--------------------------------------------------
	--说明:循环@split
	--------------------------------------------------
	set @x = charindex(@split, @tempIds) 
	while(@x>0)
	begin
		set @idLen = LEN(@tempIds)
		set @idValue = substring(@tempIds, 1, @x-1)
		set @tempIds = right(@tempIds, @idLen - @x)
		set @x = charindex(@split, @tempIds) 
		if @idValue <> ''
		begin 
			if not exists(select * from @idsTable where id=@idValue)
			begin
				set @sort = @sort + 1
				insert @idsTable values(@sort,@idValue)
			end
		end 
	end
	--------------------------------------------------
	--说明:就一个id
	--------------------------------------------------
	set @idValue = @tempIds
	if @idValue <> ''
	begin 
		if not exists(select * from @idsTable where id=@idValue)
		begin
			set @sort = @sort + 1
			insert @idsTable values(@sort,@idValue)
		end
	end 
 	return
end

调用这个结果返回的是一张表:

select * from dbo.fn_PM_Common_SplitIds
在这里插入图片描述

二、标量值函数(返回一个具体类型的值)

示例如下:

CREATE FUNCTION [dbo].[UserName] (
      @UserID AS VARCHAR(15)
    )
RETURNS VARCHAR(500)
AS
    BEGIN 
        DECLARE @strRet VARCHAR(500);
        DECLARE @Return VARCHAR(500);

        SELECT  @strRet = UserName
        FROM    Students
        WHERE   ( UserID = @UserID );

        IF @strRet = ''OR @strRet IS NULL
            SET @Return = '';
        ELSE
            SET @Return = @strRet;
        RETURN  @Return;
    END;

调用这个结果返回的是一个值:

select [dbo].[UserName](‘001’) from dbo.Students

三、总结

表值函数和标量值函数都是SQL中的函数,我们一定要学会。

相关推荐

  1. golang函数返回

    2024-04-10 11:44:01       39 阅读
  2. C++函数默认用法

    2024-04-10 11:44:01       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-10 11:44:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-10 11:44:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-10 11:44:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-10 11:44:01       20 阅读

热门阅读

  1. 【C语言】数组越界

    2024-04-10 11:44:01       13 阅读
  2. c#防呆设计

    2024-04-10 11:44:01       13 阅读
  3. uniapp_微信小程序_NaN

    2024-04-10 11:44:01       11 阅读
  4. python中tkinter窗口内替换鼠标图标

    2024-04-10 11:44:01       14 阅读
  5. 【linux】cp命令介绍以及使用范例

    2024-04-10 11:44:01       13 阅读
  6. python——运算符

    2024-04-10 11:44:01       10 阅读