2012-12-31 57 views
0

我有一個函數返回SQL Server中的單個行。現在我在該服務器上有幾個(大約幾百個)數據庫,具有相同的表結構。我想在所有數據庫上運行該功能。是否有必要在每個數據庫中創建函數,還是有其他方法?如何在多個SQL Server數據庫上運行函數?

這是在SQL Server 2005,順便說一句。

我無權發佈實際功能,但它只是一個返回行的SQL Server函數。同樣的事情也該

ALTER FUNCTION [dbo].[getTotalOrdersByProductID](@ProductID bigint, @month varchar(100), @year varchar(100)) 
RETURNS @retTotalOrder TABLE 
(
    ProductID BIGINT primary key, 
    total int 
) 
AS 
BEGIN; 

    INSERT @retTotalOrder 
    SELECT ProductID, count(*) AS total 
    FROM 
    PRODUCTS 
    WHERE PRODUCTS.orderdate BETWEEN firstDayOfMonth(@month, @year) AND lastDayOfMonth(@month, @year) 
    GROUP BY ProductID 

    RETURN 


END; 
+0

你能告訴你功能嗎?你有什麼嘗試? – Ofiris

+0

我試過從函數內部執行'use [dbname]'語句,這是行不通的。我也嘗試從函數內部使用EXEC(@sql),並嘗試從EXEC內部執行'use database',甚至嘗試將數據庫名稱連接到EXEC(@sql)內部表的所有引用,不工作 - EXEC()不允許在SQL Server函數 –

+0

的內部..我只是最終分配了所有數據庫中的函數。光標貫穿數據庫列表並沒有太長的時間。儘管引用了第n個引號。 –

回答

0

使用.符號

SELECT * FROM Server.Database1.dbo.TableName WHERE example = 12345 

SELECT * FROM Server.Database2.dbo.TableName WHERE example = 12345 

可以UNION的結果,取決於你從你的功能需要什麼。

+0

謝謝,但我不只是在不同的數據庫上運行查詢。我試圖在不同的數據庫上運行一個函數。 –

相關問題