zoukankan      html  css  js  c++  java
  • 函数

    函数可以通过查询中唤醒调用,也可以像存储过程一样,通过Execute语句执行.

    创建用户函数:create function

    修改用户函数:alter function

    删除用户函数:drop function

    语法:

    标量函数(仅返回简单数据类型):

    CREATE FUNCTION [ owner_name.] function_name
        ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) 
    
    RETURNS scalar_return_data_type
    
    [ WITH < function_option> [ [,] ...n] ] 
    
    [ AS ]
    
    BEGIN
        function_body
        RETURN scalar_expression
    END
    参数解释:
    owner_name
    拥有该用户定义函数的用户ID的名称,owner_name必须是现有的用户ID.
    function_name
    函数名.对于其所有者来说,该函数名称在数据库中应该是唯一的.
    @parameter_name
    函数的参数.CREATE FUNCTION语句中可以声明一个或多个参数,最多可有1024个参数.函数执行时,每个已声明的参数必须由用户指定参数值(除非该参数
    已有默认值),如果函数的参数有默认值,在调用该函数时,必须制定default关键字才能获得默认值.这种行为不同于储存过程中有默认值的参数,在存储过程中,
    省略参数也意味着使用默认值.
    使用@符号作为第一个字符来指定参数名称.每个函数的参数仅用于该函数本身,参数执行代表常量,而不能代表表名,列名或其他数据库对象的名称.
    scalar_parameter_data_type
    参数的数据类型.
    function_body
    指定一系列SQL语句定义函数的值.
    scalar_expression
    函数返回的标量值
    以下为例子,使用Northwind数据库
    返回整数类型数据:
    CREATE function dbo.getResult
    (
    	@flag bit
    )
    returns nvarchar(10)
    as
    begin
    	declare @result nvarchar(10)
    	if(@flag=0)
    		set @result='no'
    	else
    		set @result='yes'
    	return @result
    end
    执行:
    select dbo.getResult(1)
    select dbo.getResult(0)
    结果:
    image 

    内嵌表值函数(返回数据库表内容):
    CREATE FUNCTION [ owner_name.] function_name
        ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) 
    
    RETURNS TABLE 
    
    [ WITH < function_option > [ [,] ...n ] ] 
    
    [ AS ]
    
    RETURN [ ( ] select-stmt [ ) ]
    参数解释:
    TABLE
    指定返回值为表.
    select-stmt
    定义内嵌表值函数返回值的单个SELECT语句.
    例子,返回表:
    CREATE FUNCTION dbo.getEmployees
    (
    	@employeeid int
    )
    RETURNS TABLE
    as
    	return (select * from employees where employeeid<@employeeid)

    执行:

    select * from dbo.getEmployees(5)
    结果:
    image 

    多语句表值函数(根据多表,返回自定义表内容):
    CREATE FUNCTION [ owner_name.] function_name
        ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) 
    
    RETURNS @return_variable TABLE < table_type_definition >
    
    [ WITH < function_option > [ [,] ...n ] ] 
    
    [ AS ]
    
    BEGIN
        function_body
        RETURN
    END
    
    < function_option > ::=
        { ENCRYPTION | SCHEMABINDING }
    
    < table_type_definition > ::= 
        ( { column_definition | table_constraint } [ ,...n ] )
    例子:
    使用Northwind数据库.
    表Categories结构如下:
    image 
    表Products结构如下:
    image 
    代码:
    create FUNCTION dbo.sFn_tmpwww
    (
    	
    )
    RETURNS @definewww table
    		(
    			productName nvarchar(40),
    			categoryname nvarchar(15)
    		)
    AS
    	BEGIN
    		insert @definewww (productName,categoryname)	
    		(
    			select ProductName,CategoryName
    			from products inner join Categories on
    				products.CategoryID=categories.CategoryID
    		)
    	RETURN
    	END 

    执行函数:
    exec [databse_name.]owername.functionname([arguments][,...])
    对于表,可以
    select * from [databse_name.]owername.functionname([arguments][,...])
    对于简单数据,可以
    select [databse_name.]owername.functionname([arguments][,...])

    对于 Microsoft® SQL Server™ 2000 中包含的系统表函数,唤醒调用时需在函数名的前面加上前缀"::"。

    SELECT *
    FROM ::fn_helpcollations()
  • 相关阅读:
    Nginx源码编译安装
    nginx版本对比
    k8s中subpath挂载单个文件报错处理
    C++ array 数组函数
    洛谷 P2141
    c++ set容器
    字符串中输出每一个元素的方法
    string中的pop_back()函数
    如何去掉前导0 在字符串中 算法
    pat 乙级1074
  • 原文地址:https://www.cnblogs.com/oneword/p/1683936.html
Copyright © 2011-2022 走看看