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 也需要相应地修改,以接受一个包含多个值的参数,并在内部进行循环处理。可以使用游标等方法来实现循环执行。

    评论

报告相同问题?

悬赏问题

  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题