ALTER FUNCTION [dbo].[tttt] ( -- Add the parameters for the function here ) RETURNS int WITH SCHEMABINDING AS BEGIN -- Declare the return variable here declare @id int -- Add the T-SQL statements to compute the return value here select @id=id from dbo.aaa where id=1--去掉此句,使用此函数做计算列,便能持久化,保留便提示计算列不具确定性。 -- Return the result of the function RETURN 10 END 自定义函数内部只要引用到用户表便不具确定性吗(不论引用的表是否影响结果)?
这个问题第1个回答:
看不懂,顶
这个问题第2个回答:
WITH SCHEMABINDING 你为什么要使用这个选项?
这个问题第3个回答:
创建该函数的用户必须是aaa,这样函数和引用表便是同一架构
这个问题第4个回答:
搞错了,你那样引用是没有问题的,前提是登录用户能使用dbo.aaa
这个问题第5个回答:
我说的不是架构问题,而是函数确定性问题。 是因为写了后函数不是确定性函数,不能给它的计算列建索引。。。。。。。。。。。。 架构问题不存在,知道吗!! 我表,函数,全是windows登陆方式后建立的,同样的登陆用户,建立好的函数和表怎么不都在dbo下? 你还真搞笑。
这个问题第6个回答:
不能持久化,也不能索引。 WITH SCHEMABINDING 可能你不懂,我顺便告诉你吧,要持久化,函数必须用这个设置。 上个贴里,邹建 告诉我的!!!!!!!!!!
这个问题第7个回答:
谢谢你,试验了一次,确实是个问题,要求函数返回的值是确定性的 加了用户自定义表就出错,也许是只要从用户表中了数据,不管你是否进行运算都会报错.
这个问题第8个回答:
本来想有自定义行数实行一个无限级联的分类表,看来不能这样设计了 这样做好的计算列,不能索引优化,查询很是问题。
|