0

私は SQL Server を初めて使用し、関数を作成する割り当てを与えられました (これまでに行ったことはありません)。

関数が行うべきことは次のとおりです。データベースには生年月日を持つ 3 つのテーブルがあります。これらのテーブルのうち 2 つは database1 にあり、3 番目のテーブルは database2 にあります。

したがって、私の関数は(呼び出された/使用されたときに) database1 と table 1 に入り、特定の人の生年月日が利用可能かどうかを確認する必要があります。はいの場合、その値を取得します。いいえの場合は、テーブル 2 を調べます。最後に、両方のテーブルに生年月日がない場合は、データベース 2 とテーブル 3 に移動して生年月日を取得します。

これは可能ですか?関数は 2 つの異なるデータベースからデータを取得できますか?

どんな助けでも大歓迎です!

ありがとう!

4

2 に答える 2

3

これは、関数を作成する 1 つの方法です。

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 に答える