weixin_42841923 2019-06-07 12:09 采纳率: 0%
浏览 352

如何为SQL存储过程的参数赋值为另一张表查询的结果集,让存储过程按照这个结果集依次执行所有结果集

sql数据库中有表 inventory,表中有字段 cinvcode,值为1,2,3,4,5,6...

我写了个存储过程gylxqj,这个存储过程中使用到参数 @cinvcode
执行存储过程时,输入一个cinvcode的值比如2,得出一个结果,这样只能输入一个查询一个。
有没有办法把 表inventory中字段cinvcode的所有值赋值给参数@cinvcode,让
存储过程gylxqj依次执行inventory中字段cinvcode的所有值,再把每个值执行的结果 在一张表上体现出来?

我试过用游标,但是一直在循环执行,跳不出来。不知道还有没有其它的方式。

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 09:05
    关注

    您可以尝试使用子查询或联合查询来为存储过程的参数赋值,将查询结果集直接作为参数传入存储过程中。具体方法如下:

    1. 子查询赋值

    将表 inventory 中的所有 cinvcode 值作为参数传入存储过程中,可以使用以下语句:

    EXEC gylxqj
      @cinvcode = (SELECT cinvcode FROM inventory)
    

    这里使用了一个子查询获取表 inventory 中所有的 cinvcode 值,并将其作为参数传递给存储过程。

    1. 联合查询赋值

    另外一种方法是使用联合查询来获取表 inventory 中所有的 cinvcode 值。类似于以下语句:

    EXEC gylxqj
      @cinvcode = (SELECT cinvcode FROM inventory
                   UNION ALL
                   SELECT cinvcode FROM other_table)
    

    这里使用了一个联合查询获取表 inventoryother_table 中的所有 cinvcode 值,并将其作为参数传递给存储过程。

    需要注意的是,存储过程 gylxqj 也需要相应地修改,以接受一个包含多个值的参数,并在内部进行循环处理。可以使用游标等方法来实现循环执行。

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?