有没有一种方法可以在不使用"dbo"的情况下在Microsoft SQL Server查询上使用功能.在功能之前? [英] Is there a way to use a function on a Microsoft SQL Server Query without using "dbo." before the function?

查看:133
本文介绍了有没有一种方法可以在不使用"dbo"的情况下在Microsoft SQL Server查询上使用功能.在功能之前?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有一种方法可以在不使用"dbo"的情况下调用用户定义的函数.函数名称和参数之前?

使用:

SELECT USERFUNCTION(PARAM1, PARAM2, PARAM3, PARAMN)

代替:

SELECT dbo.USERFUNCTION(PARAM1, PARAM2, PARAM3, PARAMN)

解决方案

对于SELECT语法,这是不可能的. BOL状态:" 必须至少使用这两个函数来调用标量值函数-函数的部分名称"

此语法有效.

CREATE FUNCTION USERFUNCTION
(@p INT)
RETURNS INT
AS
BEGIN
RETURN (2)
END

GO

DECLARE @rc INT

EXEC @rc = USERFUNCTION 1

SELECT @rc

最佳做法是始终始终显式地使用架构引用合格的对象,尽管这样可以避免解析架构所需的开销(并避免无法隐式解析架构或以不希望的方式解析架构的可能性)

Is there a way to call a User defined function without using "dbo." before the function name and parameters?

Using:

SELECT USERFUNCTION(PARAM1, PARAM2, PARAM3, PARAMN)

instead of:

SELECT dbo.USERFUNCTION(PARAM1, PARAM2, PARAM3, PARAMN)

解决方案

This isn't possible for the SELECT syntax. BOL States: "Scalar-valued functions must be invoked by using at least the two-part name of the function"

This syntax works however.

CREATE FUNCTION USERFUNCTION
(@p INT)
RETURNS INT
AS
BEGIN
RETURN (2)
END

GO

DECLARE @rc INT

EXEC @rc = USERFUNCTION 1

SELECT @rc

It is best practice to always explicitly schema qualify objects you are referencing anyway though to avoid some overhead for resolving the schema (and avoid the possibility that the schema cannot be resolved implicitly or is resolved in a way that is undesired)

这篇关于有没有一种方法可以在不使用"dbo"的情况下在Microsoft SQL Server查询上使用功能.在功能之前?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆