创建一个从备用表和数据库中获取数据的函数

时间:2013-02-18 14:12:45

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

我是SQL Server的新手,我得到了一个创建函数的赋值(我以前从未做过)。

这是函数应该做的事情: 数据库中有三个表具有出生日期。其中两个表位于database1中,而第三个表位于database2中。

所以我的功能需要(当被调用/使用时)进入database1和table 1,以查看特定人的出生日期是否可用。如果是,抓住那个值。如果否,则查看表2.最后,如果两个表都没有出生日期,则转到database2和表3以获取出生日期。

这可能吗?函数可以从两个不同的数据库中获取数据吗?

感谢任何帮助!

谢谢!

2 个答案:

答案 0 :(得分:3)

这是创建函数的一种方法:

CREATE FUNCTION [dbo].[GetDatOfBirth](@PersonID INT)
RETURNS DATE
AS
BEGIN
    DECLARE @DateOfBirth DATE

    SELECT @DateOfBirth = DateOfBirth
    FROM Database1..Table1
    WHERE PersonID = @PersonID

    IF @DateOfBirth IS NULL
    BEGIN
        SELECT @DateOfBirth = DateOfBirth
        FROM Database1..Table2
        WHERE PersonID = @PersonID  
    END
    IF @DateOfBirth IS NULL
    BEGIN
        SELECT @DateOfBirth = DateOfBirth
        FROM Database2..Table1
        WHERE PersonID = @PersonID  
    END

RETURN(@DateOfBirth)
END

免责声明:像这样的标量函数通常是性能杀手,因此在大多数情况下,我会建议其他选项(例如在连接上使用此表)。

答案 1 :(得分:2)

要从其他数据库访问表,请使用以下语法:

Database.Schema.Object

请注意,这只适用于同一台服务器。如果您的数据库位于不同的服务器上,则需要创建链接服务器。

要创建用户定义的功能,请查看:

http://msdn.microsoft.com/en-us/library/ms186755.aspx

相关问题