我有两个存储过程。让我们把它们当作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不确定语法,但这是我想要实现的。 需要帮助
答案 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/