0

我对 SQL Server 很陌生,我被分配了一个创建函数的任务(我以前从未做过)。

以下是该函数应该执行的操作: 数据库中有三个具有出生日期的表。其中两个表在 database1 中,而第三个表在 database2 中。

因此,我的函数需要(在调用/使用时)进入数据库 1 和表 1 以查看特定人的出生日期是否可用。如果是,则抓住该值。如果否,则查看表2。最后,如果两个表都没有出生日期,则去database2和表3获取出生日期。

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

任何帮助表示赞赏!

谢谢!

4

2 回答 2

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

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

于 2013-02-18T14:21:22.927 回答
2

要从另一个数据库访问表,请使用以下语法:

Database.Schema.Object

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

要创建用户定义的函数,请查看:

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

于 2013-02-18T14:24:55.233 回答