从SQL Server 2008中的存储过程/函数返回可查询表

问题描述:

我很努力去理解关于此的其他一些问题。从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

下面是函数的例子可以实现:

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

Here是创建和使用表值函数的直接简单示例。

根据您的要求和SQL Server版本(2008+必需),如果您需要对结果集进行复杂处理,您可能需要查看创建存储过程的table-valued parameter。这涉及到创建user-defined table type并在存储过程中声明此类型的输入参数以处理结果。