随、风 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日

悬赏问题

  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。
  • ¥15 GitHubssh虚拟机连接不上
  • ¥15 装完kali之后下载Google输入法 重启电脑后出现以下状况 且退不出去 桌面消失 反复重启没用
  • ¥15 ESP-IDP-BLE配网连接wifi