SQL函数未在正确的SQL数据库中创建

时间:2017-05-20 01:36:35

标签: sql sql-server sql-server-2008

我已在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",或名称不明确。

我该如何解决这个问题?有没有办法在特定的数据库名称中创建函数?

2 个答案:

答案 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其他

直接引用对象