从SQL Server 2008中的存储过程/函数返回可查询表
问题描述:
我很努力去理解关于此的其他一些问题。从SQL Server 2008中的存储过程/函数返回可查询表
我基本上有一个存储过程,做一个小逻辑,然后是SELECT
加载一个内部连接。
我想能够调用这个来返回我的结果,但是然后对它运行查询。
我在另一个关于表值函数的问题中看到了一些东西,但我无法完全理解它们是如何工作的。谁能帮我吗?
答
下面是函数的例子可以实现:
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并在存储过程中声明此类型的输入参数以处理结果。
是什么意思“确实有点逻辑” ?,如果你的sp需要插入或更新数据(和一些其他操作),然后执行'SELECT',那么这将无法在函数 – Lamak 2012-03-14 12:21:26
上检查传入的值,如果它是一个整数运行一个稍微不同的SELECT – NibblyPig 2012-03-14 12:24:59
但是这个略有不同的'SELECT'有山姆e列比另一列? – Lamak 2012-03-14 12:26:38