2012-03-14 95 views
0

我很努力去理解關於此的其他一些問題。從SQL Server 2008中的存儲過程/函數返回可查詢表

我基本上有一個存儲過程,做一個小邏輯,然後是SELECT加載一個內部連接。

我想能夠調用這個來返回我的結果,但是然後對它運行查詢。

我在另一個關於表值函數的問題中看到了一些東西,但我無法完全理解它們是如何工作的。誰能幫我嗎?

+0

是什麼意思「確實有點邏輯」 ?,如果你的sp需要插入或更新數據(和一些其他操作),然後執行'SELECT',那麼這將無法在函數 – Lamak 2012-03-14 12:21:26

+0

上檢查傳入的值,如果它是一個整數運行一個稍微不同的SELECT – NibblyPig 2012-03-14 12:24:59

+0

但是這個略有不同的'SELECT'有山姆e列比另一列? – Lamak 2012-03-14 12:26:38

回答

3

下面是函數的例子可以實現:

CREATE FUNCTION [dbo].[YourFunction](@PassedValue VARCHAR(50)) 
RETURNS @RtnValue TABLE 
(
    Col1 INT, 
    Col2 INT 
) 
AS 
BEGIN 
    IF @PassedValue NOT LIKE '%[^0-9]%' 
    BEGIN 
     INSERT INTO @RtnValue 
     SELECT 1,1 -- Your first query here 
    END 
    ELSE 
    BEGIN 
     INSERT INTO @RtnValue 
     SELECT 2,2 -- Your second query here 
    END 

    RETURN 
END 

然後你可以使用它作爲一個表上查詢:

SELECT * 
FROM dbo.YourFunction('123') 
+0

乾杯,得到它與這個例子的工作! – NibblyPig 2012-03-14 12:51:18

1

Here是創建和使用表值函數的直接簡單示例。

根據您的要求和SQL Server版本(2008+必需),如果您需要對結果集進行復雜處理,您可能需要查看創建存儲過程的table-valued parameter。這涉及到創建user-defined table type並在存儲過程中聲明此類型的輸入參數以處理結果。

相關問題