电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

ALTER FUNCTION


发布日期:2018/7/26
 

更改先前由CREATE FUNCTION 语句创建的现有用户定义函数但不会更改权限也不影响相关的函数存储过程或触发器

语法

标量函数

ALTER FUNCTION [ owner_name ] function_name

( [ { @parameter_name scalar_parameter_data_type [ = default ] } [ n ] ] )

RETURNS scalar_return_data_type

[ WITH < function_option> [n] ]

[ AS ]

BEGIN

function_body

RETURN scalar_expression

END

内嵌表值函数

ALTER FUNCTION [ owner_name ] function_name

( [ { @parameter_name scalar_parameter_data_type [ = default ] } [ n ] ] )

RETURNS TABLE

[ WITH < function_option > [ n ] ]

[ AS ]

RETURN [ ( ] selectstmt [ ) ]

多语句表值函数

ALTER FUNCTION [ owner_name ] function_name

( [ { @parameter_name 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 ] )

参数

owner_name

拥有待更改的用户定义函数的用户 ID 名owner_name 必须是现有用户 ID

function_name

是要更改的用户定义函数函数名称必须符合标识符的规则对其所有者来说该名称在数据库中必须是唯一的

@parameter_name

用户定义函数的参数可声明一个或多个参数函数最多可以有 个参数用户必须在执行函数时提供每个所声明参数的值(除非定义了该参数的默认值)当该函数的参数有默认值时在调用该函数时必须指定default关键字才能获得默认值此行为不同于在存储过程中有默认值的参数在存储过程中省略参数也意味着使用默认值

使用 @ 符号作为第一个字符来指定参数名称参数名称必须符合标识符的规则每个函数的参数仅用于该函数本身相同的参数名称可以用在其它函数中参数只能代替常量而不能用于代替表名列名或其它数据库对象的名称

scalar_parameter_data_type

参数的数据类型所有标量数据类型(包括 bigint 和 sql_variant)都可用作用户定义函数的参数不支持 timestamp 数据类型不能指定非标量类型(例如 cursor 和 table)

scalar_return_data_type

是标量用户定义函数的返回值scalar_return_data_type 可以是 SQL Server 支持的任何标量数据类型(textntextimage 和 timestamp 除外)

scalar_expression

指定标量函数返回标量值

TABLE

指定表值函数的返回值为表

在内嵌表值函数中通过单个 SELECT 语句定义 TABLE 返回值内嵌函数没有相关联的返回变量

在多语句表值函数中@return_variable 是 TABLE 变量用于存储和累积应作为函数值返回的行

function_body

指定一组 TransactSQL 语句定义函数的值这些语句合在一起不会产生副作用function_body 只用于标量函数和多语句表值函数

在标量函数中function_body 是一系列合起来求得标量值的 TransactSQL 语句

在多语句表值函数中function_body 是一系列填充表返回变量的 TransactSQL 语句

selectstmt

是定义内嵌表值函数返回值的单个 SELECT 语句

ENCRYPTION

指出 SQL Server 加密包含 CREATE FUNCTION 语句文本的系统表列使用 ENCRYPTION 可以避免将函数作为 SQL Server 复制的一部分发布

SCHEMABINDING

指定将函数绑定到它所引用的数据库对象如果其它架构绑定对象引用该函数此条件将防止更改该函数

函数与其所引用对象的绑定关系只有在发生以下两种情况之一时才被解除

除去了函数

在未指定 SCHEMABINDING 选项的情况下更改了函数(使用 ALTER 语句)

有关函数绑定到架构所必须满足的条件列表请参见 CREATE FUNCTION

注释

不能用 ALTER FUNCTION 将标量值函数更改为表值函数反之亦然同样地也不能用 ALTER FUNCTION 将行内函数更改为多语句函数反之亦然

权限

ALTER FUNCTION 权限默认授予 sysadmin 固定服务器角色成员db_owner 和 db_ddladmin 固定数据库角色成员和函数的所有者且不可转让

函数的所有者对其函数具有 EXECUTE 权限不过也可将此权限授予其他用户

上一篇:Win XP“用户名”的三则技巧(图)

下一篇:XP系统登陆原理及其验证机制概述