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

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

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

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

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

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