我是SQL Server的新手,我得到了一个创建函数的赋值(我以前从未做过)。
这是函数应该做的事情: 数据库中有三个表具有出生日期。其中两个表位于database1中,而第三个表位于database2中。
所以我的功能需要(当被调用/使用时)进入database1和table 1,以查看特定人的出生日期是否可用。如果是,抓住那个值。如果否,则查看表2.最后,如果两个表都没有出生日期,则转到database2和表3以获取出生日期。
这可能吗?函数可以从两个不同的数据库中获取数据吗?
感谢任何帮助!
谢谢!
答案 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
请注意,这只适用于同一台服务器。如果您的数据库位于不同的服务器上,则需要创建链接服务器。
要创建用户定义的功能,请查看: