2015-12-04 34 views
0

我正在努力研究如何創建一個用戶定義的函數,它將接受一個輸入參數作爲表,然後輸出一個表,然後可以在調用它的函數中使用該表,作爲表格。從我一直在使用的示例中,我可以輸入表格或將表格取出,但不能同時使用 有誰知道該怎麼做?UDF輸入一個表並輸出一個表

+0

這會有助於更多地瞭解您正在嘗試做什麼。例如,您可以通過使用XML來傳遞類似結構的表格。如果你想傳遞一個真正的表,你可以通過傳遞表名並在動態sql中使用它來完成。你也可以使用全局臨時表來處理你的函數,但它很大程度上取決於你想要完成的工作。 – SubqueryCrunch

+0

理想情況下,我想定義一個輸入到UDF作爲表,然後得到它的結果作爲表。即CREATE FUNCTION ExampleFunction(@TABLE AS TABLE( \t \t \t \t \t SomePrimaryKey [INT] NULL \t \t \t \t \t)READONLY) RETURNS @SomethingElse TABLE ( SomePrimaryKey INT, SomeData爲nvarchar(80), SomeMoreData int ) –

+0

另一個存儲過程可以調用它,給它一個數據表,然後獲取數據表以繼續處理。 –

回答

0

有一點幫助,我想我已經明白了。

--DROP TYPE TableType 
CREATE TYPE TableType 
AS TABLE (SomePrimaryKey_ID INT) 
GO 


--DROP FUNCTION Example 
CREATE FUNCTION Example(@TableName TableType READONLY) 
RETURNS @Test TABLE 
(
intcfmno INT 
) 
AS 
BEGIN 
DECLARE @testing AS VARCHAR --<< just checking that I can still declare a variable in the funciton 
INSERT @Test 
SELECT 22 
RETURN 
END 


-- testing the function 
DECLARE @myTable TableType 
INSERT INTO @myTable(SomePrimaryKey_ID) VALUES(111) 
--SELECT * FROM @myTable 
SELECT * from Example(@myTable) 
+0

我可能會跳槍。這將工作,沒有問題,如果我在主數據庫,但只要我去一個用戶數據庫然後失敗,帶有標量錯誤消息。檢查了類型和功能的權限。我也是一樣跑步。已經解決了日期輸入和表輸出的問題。但真的很想做到這一點。 –

+0

對於那裏的任何人。這個問題是由於數據庫的兼容級別造成的。可以使用DECLARE @sql varchar(250) set @ sql ='alter database'+ quotename(db_name())+'SET COMPATIBILITY_LEVEL = 90'; exec(@sql) –

相關問題