我已在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"或用户定义的函数或 aggregate" dbo.maximum_time",或名称不明确。
我该如何解决这个问题?有没有办法在特定的数据库名称中创建函数?
答案 0 :(得分:1)
根据我收到的评论,问题是由于没有定义将在其中创建函数的数据库名称引起的。下面代码中的前两行被添加以解决问题。
USE [database_name]
GO
CREATE FUNCTION [dbo].[maximum_time]
(
@TotalLengthofRecords REAL
)
RETURNS FLOAT
AS
BEGIN
RETURN
CASE
WHEN @TotalLengthofRecords > 3600 THEN 3600
ELSE @TotalLengthofRecords
END
END
答案 1 :(得分:-1)
SELECT
A.*,
Master.[dbo].[maximum_time]([TotalLengthofRecords_MAX])AS [TotalLengthofRecords_MAX]
INTO [dbo].[BunkerAISFinal_V7]
FROM [dbo].[BunkerAISFinal_V6] AS A;
<强> 1。要引用对象,用户必须遵循此
[服务器/ SERVERIP]。[数据库名]。[SCHEMANAME]。[对象名]。
对于不同的服务器,必须应用链接服务器。
<强> 2。如果被引用对象的服务器相同且对象位于另一个数据库中,并且您可以使用不同的模式。
[数据库名]。[SCHEMANAME]。[对象名]
3如果数据库相同且架构使用不同 [SCHEMANAME]。[对象名]
4其他
直接引用对象