【发布时间】:2017-10-20 05:36:18
【问题描述】:
我已经在 SQL 数据库上成功创建了以下函数。
CREATE FUNCTION [dbo].[maximum_time]
(
@TotalLengthofRecords REAL
)
RETURNS FLOAT
AS
BEGIN
RETURN
CASE
WHEN @TotalLengthofRecords > 3600 THEN 3600
ELSE @TotalLengthofRecords
END
END
查看Microsoft SQL Server Management Studio中的对象,似乎System Database -> master中已经成功创建了用户自定义函数。但是,该函数未出现在项目数据库中。
每当我尝试使用以下代码调用该函数时:
SELECT
A.*,
[dbo].[maximum_time]([TotalLengthofRecords_MAX])AS [TotalLengthofRecords_MAX]
INTO [dbo].[BunkerAISFinal_V7]
FROM [dbo].[BunkerAISFinal_V6] AS A;
系统会抛出以下错误:
找不到“dbo”列或用户定义的函数,或者 聚合“dbo.maximum_time”,或者名称不明确。
我该如何解决这个问题?有没有办法在特定的数据库名称中创建函数?
【问题讨论】:
-
试试看here。同样的问题。可以帮到你。
-
我看过帖子。这是一个不同的问题,因为我相信我的函数应该是
Scalar-valued function。 -
好像在System Database -> master中成功创建了用户自定义函数。可能是这样,但它是在数据库所有者 (dbo) 的帐户下在当时使用的任何数据库中创建的。或许你应该先了解
use <dbname>的概念以及[dbo]的含义,然后再将其随机插入到您的SQL 中? -
嗨,肯。我理解这个概念。但是,代码不适用于替换
CREATE FUNCTION [dbname].[dbo].[maximum_time]。我该如何纠正? -
在你的函数类型的顶部使用 [你的数据库] GO 然后继续你的函数代码
标签: sql sql-server sql-server-2008