【问题标题】:how to call a stored procedure in where clause of SQL如何在 SQL 的 where 子句中调用存储过程
【发布时间】:2013-05-01 06:34:06
【问题描述】:

我有一个 T-SQL 脚本,要求是我需要在 where 子句中调用一个存储过程。这个存储过程接受一个参数并返回一个位结果。请指导我如何做到这一点。

谢谢

编辑: 我不能修改这个 sp 并使它成为一个函数。请

【问题讨论】:

  • 这将是一个用户定义的函数...
  • 我认为User Defined Function 是很好的做法
  • 在 Where 子句中?或从?这两个你都不能做。

标签: sql sql-server sql-server-2008 tsql sql-server-2005


【解决方案1】:

您不能在 where 子句中使用 Stored Procedure,但可以在 where 子句中使用 User Defined Function

如果您不能将 SP 转换为函数,那么您必须首先从执行 SP 中获取位值并在 where 子句中使用该变量..

【讨论】:

    【解决方案2】:

    您可以使用临时表来存储存储过程的输出并在 where 子句中使用它。 临时变量中的列数必须与过程结果集中的列数相同,并且与存储过程结果集中的列具有精确的数据类型。 例如,

    create table #spResult ({columns as result of your sp})
    
    insert into #spResult exec YourSP ({input parameters})
    
    select * from yourtable 
    where col in (select col from #spResult) 
    
    drop table #spResult 
    

    【讨论】:

      猜你喜欢
      • 2014-01-24
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多