为什么在调用存储过程时调用用户定义的函数时不需要所有者名称? 请帮忙!为什么在调用存储过程时调用用户定义的函数时需要所有者名称?
1
A
回答
3
我假设你是指模式名称?所有者是创建它的用户。
它区分功能和内置功能。 “系统”存储过程和函数存在于主数据库中(因此可以进行搜索),而内置函数(例如DATEADD
)驻留在数据库引擎中。
当你为数据库引擎指定SELECT MyFunction()
来确定你是指一个驻留在数据库中的函数还是一个内置函数时,我想这会更困难。
2
这实际上只是标量值函数的情况。
+0
是的,你是对的伊恩。我刚刚测试并确认你说的话!那么从这个角度来说,我们可以说“没有系统表值函数”吗? – 2010-03-07 05:54:37
0
在与上面的Andy讨论之后,我在这里回答我自己的问题: 创建时,存储过程存储在连接的当前数据库中。与此同时,函数存储在两个位置:数据库引擎(标量值内置函数)和连接的当前数据库(用户定义的数据库)。 因此,在调用用户定义的标量值函数时,我们需要模式名称前缀来区分它们与内置函数。对于其他类型的函数和存储过程,我们不需要此前缀。
相关问题
- 1. JavaScript即时函数调用 - 为什么函数需要括号?
- 2. 为什么在调用我的javascript函数时需要'javascript:'?
- 3. 在另一个用户定义的函数中调用用户定义的函数时发生名称错误
- 4. Get调用存储过程的名称
- 5. 如何在调用sql存储过程时获取列名称
- 6. 为什么我在定义原型时无法调用函数?
- 7. 创建存储过程时需要“定义者”吗?
- 8. 调用MPI_Comm_spawn时,所有进程是否需要所有数据?
- 9. 如何调用从用户定义函数存储过程在SQL Server 2000
- 10. 在存储过程中调用“函数”
- 11. 为什么程序在调用函数时跳过输入?
- 12. 在需要时调用函数
- 13. 在调用存储过程中的函数时发生错误
- 14. 找到的所有存储过程调用一个函数
- 15. 在侧存储过程中调用用户定义函数的方法是什么?
- 16. 从select语句调用用户定义的存储过程mysql
- 17. 为什么有时候viewDidLoad首先被调用,有时候被称为后者?
- 18. 调用函数时使用$或`(tilt)与通常调用函数的名称有什么区别
- 19. NameError:尝试调用函数时未定义名称'loan_tape'
- 20. 在存储过程中查找调用者用户
- 21. 为什么在调用document.ready()时声明的函数没有定义?
- 22. 为什么jqueryAjax回调函数不需要被调用?
- 23. 什么时候需要在Tkinter应用程序中调用mainloop?
- 24. 有没有办法在被调用者中获得调用函数的名称?
- 25. 什么时候需要从构造函数调用`super`?
- 26. 如何在调用之前确定用户定义的函数参数名称?
- 27. 调用者/被调用者不匹配签名的gcc函数调用语义
- 28. 为网站创建Sql Server DB时需要定义什么类型的所有者和用户?
- 29. 为什么使用UDP套接字时不需要listen()函数调用?
- 30. 调用Mysql时出错存储过程
谢谢安迪! 是的,我的意思是模式名称。那么,你说的是什么帮助,但我并不完全同意你的看法。为什么我们不需要区分用户的存储过程与内置存储过程? – 2010-03-07 05:40:48
由于存储过程只存在于数据库中,因此它们不会内置,因此引擎可以同时搜索主数据库和当前数据库。这就是为什么你应该尽量不要命名你的过程sp_something。如果SQL在您的过程开始时看到sp_,它将首先搜索master数据库。 – 2010-03-07 09:04:21
谢谢安迪。我现在明白了。正如伊恩在下面所说的,我们只需要标量函数的模式。对于表值函数,我们不需要一个。我想听听你对安迪的想法。请与我讨论。 – 2010-03-07 10:27:32