随、风 2024-03-08 15:27 采纳率: 28.6%
浏览 3
已结题

存储过程的结果集和表数据关联

表B:

IDonetwothree
1111213
22212324

SQL server数据库中执行存储过程(exec CCGC '22')有存储过程返回的结果为:

IDcon
22看见

在SQL server数据库中,如何通过SQL语句将上图存储过程返回的结果集和表B通过ID连接在一起,得到以下结果:

IDonetwothreecon
22212324看见
  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-08 15:27
    关注

    引自免费微信小程序:皆我百晓生

    在SQL Server中,我们可以使用临时表或者表变量来暂存存储过程的输出结果,然后通过JOIN操作将这个临时结果与原始表B进行连接。以下是一个示例:

    首先,创建一个临时表来接收存储过程的结果集:

    CREATE TABLE #TempResult (ID INT, con VARCHAR(100))
    
    INSERT INTO #TempResult (ID, con)
    EXEC CCGC '22'
    

    接下来,通过ID字段将临时表#TempResult与表B进行LEFT JOIN(假设你希望保留表B的所有记录,并附加存储过程返回的con值):

    SELECT B.ID, B.one, B.two, B.three, T.con
    FROM TableB B
    LEFT JOIN #TempResult T ON B.ID = T.ID
    

    这样,你就能得到所需的结果集了。最后别忘了删除临时表以释放资源:

    DROP TABLE #TempResult
    

    以上步骤整合为一个完整的脚本如下:

    BEGIN TRANSACTION
    
    CREATE TABLE #TempResult (ID INT, con VARCHAR(100))
    
    INSERT INTO #TempResult (ID, con)
    EXEC CCGC '22'
    
    SELECT B.ID, B.one, B.two, B.three, T.con
    FROM TableB B
    LEFT JOIN #TempResult T ON B.ID = T.ID
    
    -- 如果不再需要临时表,可以在这里删除它
    -- DROP TABLE #TempResult
    
    COMMIT TRANSACTION
    

    请根据实际情况调整表名和列名,以及存储过程的参数。同时,请确保在数据库环境中执行此操作时有适当的权限。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 创建了问题 3月8日