如何在where子句中调用存储过程

时间:2011-06-09 07:46:35

标签: sql-server-2005 stored-procedures where-clause

我有两个存储过程。让我们把它们当作SP1和SP2。 SP1是主要的存储过程,SP2是在SP2内部调用的存储过程。 即)SP1有三个输入参数(Fromdate,todate,LoginName),SP2有一个输入参数(LoginName)。 我想要做的是:在SP1的where子句中调用SP2作为:

SELECT column1,
       column2,
       column3
from <Sometable>
where column1<=fromdate and column1>=todate and column2 in(exec SP2 @LoginName)

IAm不确定语法,但这是我想要实现的。 需要帮助

2 个答案:

答案 0 :(得分:3)

以下是实现此目的的一种方法 - 您可能还想阅读Table-valued UDFs

CREATE TABLE #logins (
  <schema for EXEC SP2 return here>
)

INSERT INTO #logins
  EXEC SP2 @LoginName

SELECT column1, column2, column3
from YOUMISSEDTHETABLEOUTHERE
where column1<=fromdate and column1>=todate and column2 in (
  SELECT therelevantcolumn FROM #logins
)

答案 1 :(得分:0)

您无法在select语句中执行和使用存储过程。你可以做的是创建一个用户定义的函数,并在你的where子句中使用它来过滤所需的列左右。 这是一个链接,你可以检查它: http://social.msdn.microsoft.com/Forums/en-US/sqlgetstarted/thread/a9a9e027-0b93-4f9e-b0cf-84fa02010166/