【问题标题】:Call a Stored procedure in SQL CTE在 SQL CTE 中调用存储过程
【发布时间】:2011-09-14 00:30:04
【问题描述】:

是否允许在 SQL CTE 语句中执行存储过程?我对 sql cte 查询有点陌生...

【问题讨论】:

    标签: sql sql-server-2005 common-table-expression


    【解决方案1】:

    不,对不起。仅选择语句

    如果你需要使用存储过程输出(结果集),那么它就是一个临时表

    CREATE TABLE #foo (bar int...)
    
    INSERT #foo (bar, ...)
    EXEC myStoredProc @param1...
    
    -- more code using #foo
    

    【讨论】:

    • @Revious:我认为是的,但这取决于版本。旧版本(SQL 2000,也许是 SQL Server 2005)不允许这样做
    • 你知道怎么写吗?
    • @Revious 我现在不明白你的意思。问另一个问题是否不仅仅是将CREATE TABLE #foo"...更改为DECLARE @foo TABLE...
    • @gbn 如果我们有动态列数怎么办。表示有时 sp 返回 1 列,有时返回 2 列,依此类推。
    【解决方案2】:

    你也可以使用表变量:

    DECLARE @tbl TABLE(id int ,name varchar(500) ,...)      
        INSERT INTO @tbl        
        EXEC myprocedure @param ..
    
    with cte as (
        SELECT * FROM @tbl  
    )
    select * from cte
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 2011-03-18
      • 2015-03-14
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      相关资源
      最近更新 更多