该函数所引用的对象不是用两部分名称引用的。 Www__com
该函数及其引用的对象属于同一数据库。 中国.站.长站
执行 CREATE FUNCTION 语句的用户对所有该函数所引用的数据库对象都具有 REFERENCES 权限。 ~com
如果不符合以上条件,则指定了 SCHEMABINDING 选项的 CREATE FUNCTION 语句将失败。 中.国.站.长.站
注释 ~com
用户定义函数为标量值函数或表值函数。如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数。可以使用多条 Transact-SQL 语句定义标量值函数。 ^com
如果 RETURNS 子句指定 TABLE,则函数为表值函数。根据函数主体的定义方式,表值函数可分为行内函数或多语句函数。
如果 RETURNS 子句指定的 TABLE 不附带列的列表,则该函数为行内函数。行内函数是使用单个 SELECT 语句定义的表值函数,该语句组成了函数的主体。该函数返回的表的列(包括数据类型)来自定义该函数的 SELECT 语句的 SELECT 列表。 Www~~com
如果 RETURNS 子句指定的 TABLE 类型带有列及其数据类型,则该函数是多语句表值函数。
多语句函数的主体中允许使用以下语句。未在下面的列表中列出的语句不能用在函数主体中。 中.国.站长站
赋值语句。 .com
控制流语句。
DECLARE 语句,该语句定义函数局部的数据变量和游标。 中国站长_站,为中文网站提供动力
SELECT 语句,该语句包含带有表达式的选择列表,其中的表达式将值赋予函数的局部变量。 中国站.长.站
游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。只允许使用以 INTO 子句向局部变量赋值的 FETCH 语句;不允许使用将数据返回到客户端的 FETCH 语句。 中国.站长站
INSERT、UPDATE 和 DELETE 语句,这些语句修改函数的局部 table 变量。 中国站长.站
EXECUTE 语句调用扩展存储过程。
函数的确定性和副作用 Www__com
函数可以是确定的或不确定的。如果任何时候用一组特定的输入值调用函数时返回的结果总是相同的,则这些函数为确定的。如果每次调用函数时即使用的是相同的一组特定输入值,返回的结果总是不同的,则这些函数为不确定的。 [中国站长站]
不确定的函数会产生副作用。副作用是更改数据库的某些全局状态,比如更新数据库表或某些外部资源,如文件或网络等(例如,修改文件或发送电子邮件消息)。 中国站.长.站
不允许在用户定义函数主体中内置不确定函数;这些不确定函数如下: Www~~com
以下为引用的内容:@@CONNECTIONS @@TOTAL_ERRORS @@CPU_BUSY @@TOTAL_READ @@IDLE @@TOTAL_WRITE @@IO_BUSY GETDATE @@MAX_CONNECTIONS GETUTCDATE @@PACK_RECEIVED NEWID @@PACK_SENT RAND @@PACKET_ERRORS TEXTPTR @@TIMETICKS Www~~com
尽管在用户定义函数主体中不允许有不确定函数,这些用户定义函数在调用扩展存储过程时仍会产生副作用。 中.国站长站
由于扩展存储过程会对数据库产生副作用,因此调用扩展存储过程的函数是不确定的。当用户定义函数调用会对数据库产生副作用的扩展存储过程时,不要指望结果集保持一致或执行函数。 Www__com
从函数中调用扩展存储过程
从函数内部调用时扩展存储过程无法向客户端返回结果集。任何向客户端返回结果集的 ODS API 都将返回 FAIL。扩展存储过程可以连接回 Microsoft? SQL Server?;但是,它不应尝试联接与唤醒调用扩展存储过程的函数相同的事务。 中国站长_站,为中文网站提供动力
与从批处理或存储过程中唤醒调用相似,扩展存储过程在运行 SQL Server 的 Windows? 安全帐户的上下文中执行。存储过程的所有者在授予用户 EXECUTE 特权时应考虑这一点。 Www^^com
函数调用 站.长.站
在可使用标量表达式的位置可唤醒调用标量值函数,包括计算列和 CHECK 约束定义。当唤醒调用标量值函数时,至少应使用函数的两部分名称。 中国站.长站
[database_name.]owner_name.function_name ([argument_expr][,...]) [中国站长站]
如果用户定义函数用于定义计算列,则该函数的确定性同样决定了是否可在该计算列上创建索引。只有当函数具有确定性时,才可以在使用该函数的计算列上创建索引。如果在输入相同的情况下函数始终返回相同的值,则该函数具有确定性。 Www~~com
可以使用由一部分组成的名称唤醒调用表值函数。 ^com
[database_name.][owner_name.]function_name ([argument_expr][,...]) _com
对于 Microsoft? SQL Server? 2000 中包含的系统表函数,唤醒调用时需在函数名的前面加上前缀"::"。 _com
以下为引用的内容:SELECT *FROM ::fn_helpcollations() .com
对于导致语句停止执行然后从存储过程中的下一语句继续执行的 Transact-SQL 错误,在函数中的处理方式不同。在函数中,这类错误会导致函数停止执行。这反过来使唤醒调用该函数的语句停止执行。 [中国站长站]
权限
用户应具有执行 CREATE FUNCTION 语句的 CREATE FUNCTION 权限。 [中国站长站]
CREATE FUNCTION 的权限默认地授予 sysadmin 固定服务器角色和 db_owner 和 db_ddladmin 固定数据库角色的成员。 中国站.长.站
sysadmin 和 db_owner 的成员可用 GRANT 语句将 CREATE FUNCTION 权限授予其它登录。 站.长.站
函数的所有者对其函数具有 EXECUTE 权限。其他用户不具有 EXECUTE 权限,除非给他们授予了特定函数上的 EXECUTE 权限。 站长.站
若要创建或更改在 CONSTRAINT、DEFAULT 子句或计算列定义中引用了用户定义函数的表,用户还必须对这些函数有 REFERENCES 权限。 中.国站长站
示例 中国站长_站,为中文网站提供动力
A. 计算 ISO 周的标量值用户定义函数 中国.站.长站
下例中,用户定义函数 ISOweek 取日期参数并计算 ISO 周数。为了正确计算该函数,必须在调用该函数前唤醒调用 SET DATEFIRST 1。 Www@@com
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




