为什么在调用存储过程时调用用户定义的函数需要所有者名称? 请帮忙!
答案 0 :(得分:3)
我认为你的意思是架构名称?所有者是创建它的用户。
它将功能与内置功能区分开来。 “系统”存储过程和函数存在于master数据库中(因此可以搜索),而内置函数(如DATEADD
)则驻留在数据库引擎本身。
我想当你为数据库引擎指定SELECT MyFunction()
以确定你是指一个存在于数据库中的函数还是内置函数时,会更加困难。
答案 1 :(得分:2)
这实际上只是标量值函数的情况。
答案 2 :(得分:0)
在与Andy讨论之后,我在这里回答了我自己的问题: 存储过程在创建时存储在连接的当前数据库中。同时,函数存储在两个位置:数据库引擎(标量值内置的)和连接的当前数据库(用户定义的)。 因此,在调用用户定义的标量值函数时,我们需要模式名称前缀来区分它们与内置函数。对于其他类型的函数和存储过程,我们不需要此前缀。