gpt4 book ai didi

sql-server - SQL Server 找不到我的函数

转载 作者:行者123 更新时间:2023-12-03 00:46:54 25 4
gpt4 key购买 nike

我使用 SQL Server 2008 和 Borland Delphi 来开发我的应用程序。最近我遇到了一个非常奇怪的错误。我创建了几个在应用程序中使用的标量函数,但我遇到了客户的问题,在他的公司中,当我调用我的标量函数时,我的软件返回以下错误:

Cannot find either column “dbo” or the user-defined function or aggregate “dbo.FunctionName”, or the name is ambiguous."

我已经搜索了很多,即使在这里,所以请记住:

  1. 该函数存在;

  2. 我正在查询正确的数据库;

  3. 没有错别字;

  4. 所有者架构为 dbo

  5. 我的所有功能都会出现此问题;

    最奇怪的是......

  6. 只有当我从应用程序调用它们时才会发生这种情况,如果我使用同一用户在查询分析器上运行完全相同的代码,它将运行得很好。

我在其他几个客户中也有同样的功能,他们没有任何问题。难道是 SQL Server 的问题吗?

Ps:抱歉我的英语不好,这是第一个问题。

最佳答案

我不知道 QueryAnalyzer 如何调用你的函数,但我知道这个错误。
通常,当您有用户定义的函数时,您需要在函数前添加架构名称作为前缀。

因此,如果您的函数位于模式“dbo”中,并且名称为“fnPadLeft”,则需要在如下代码中调用该函数:

SELECT 
id
,some_field
,dbo.fnPadLeft(some_other_field)
FROM YOUR_TABLE_NAME

如果你这样调用它:

SELECT 
id
,some_field
,fnPadLeft(some_other_field) -- lacks dbo.
FROM YOUR_TABLE_NAME

然后你会得到“没有这样的功能”。
顺便说一句,这只发生在标量函数上。 (您特别提到了这一点),表值函数(以及所有其他非函数事物)不受此“功能”的影响。

也可能是您在两个模式中具有相同的函数名称(另请查看主数据库中的函数)。也许您的“其他函数”是表值函数。

关于sql-server - SQL Server 找不到我的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17379922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com