art*_*tie 5 sql-server sql-server-2008
我将SQL Server 2008与Borland Delphi结合使用来开发我的应用程序。从最近开始,我收到了一个非常奇怪的错误。我已经创建了几个在应用程序中使用的标量函数,但是我遇到了一个客户的问题,在他的公司中,当我调用标量函数时,我的软件返回以下错误:
找不到列“ dbo”或用户定义的函数或聚合“ dbo.FunctionName”,或者名称不明确。”
即使在这里,我也已经搜索了很多东西,因此请记住:
dbo;我的所有功能都会出现此问题;
还有最奇怪的
仅当我从应用程序中调用它们时,如果我使用相同的用户在查询分析器上运行完全相同的代码,它就会很好地运行。
我在其他几个客户中都具有相同的功能,他们没有任何问题。可能是SQL Server问题吗?
附言:对不起,我的英语不好,这是第一个问题。
我不知道 QueryAnalyzer 如何调用你的函数,但我知道这个错误。
通常,当您有用户定义的函数时,您需要在函数前面加上架构名称作为前缀。
因此,如果您的函数位于模式“dbo”中,并且名称为“fnPadLeft”,则需要在如下代码中调用该函数:
SELECT
id
,some_field
,dbo.fnPadLeft(some_other_field)
FROM YOUR_TABLE_NAME
Run Code Online (Sandbox Code Playgroud)
如果你这样称呼它:
SELECT
id
,some_field
,fnPadLeft(some_other_field) -- lacks dbo.
FROM YOUR_TABLE_NAME
Run Code Online (Sandbox Code Playgroud)
然后你会得到“没有这样的功能”。
顺便说一句,这只发生在标量函数上。(您特别提到了这一点),表值函数(以及所有其他非函数事物)不受此“功能”的影响。
也可能是两个模式中有相同的函数名(另请查看主数据库中的函数)。也许您的“其他函数”是表值函数。
| 归档时间: |
|
| 查看次数: |
2041 次 |
| 最近记录: |