作者licheer (Keep The Faith)
看板Database
标题Re: [SQL ] VBA利用SQL读BOM,SP多参数
时间Sun Sep 15 19:43:11 2019
再请教一个问题,如果要带入的参数是不固定的n个
有时1个,有时20个
可以类似C的 sub function 多引数吗? int func(int arg_count, ...)
CREATE PROCEDURE DB_GetEntireLevelBOM
-- Add the parameters for the stored procedure here
@MN1_PartNumber VARCHAR(30),
@MN2_PartNumber VARCHAR(30),
@MN3_PartNumber VARCHAR(30),
.....
※ 引述《licheer (Keep The Faith)》之铭言:
: 资料库名称: MSSQL
: 下面这段code在MSSQL Studio中是可以执行,也可以查到结果
: 但是搬到VBA里面(将下面的SQL语句,全部放在同一个string中)
: 就会出现 "当物件关闭时,不允许操作" 的错误
: 请问这是哪里错了呢?
: ======
: declare @maincode char(60)
: set @maincode='12345-77889965'--
: declare @i int
: set @i=0
: --定义主件品号临时表
: declare @tmp_main table (品号 CHAR(60))
: --将待查品号存入主件品号临时表
: INSERT INTO @tmp_main SELECT MD003 FROM BOMMD WHERE MD001=@maincode
: --定义BOM明细临时表
: declare @tmp_bom table (主件品号 char(60),元件品号 char(60),组成用量 float,
: 阶数 int)
: --将待查品号下一级元件品号数据存入BOM明细临时表
: insert into @tmp_bom select MD001,MD003,MD006,@i from BOMMD
: where MD001 =@maincode
: --如果BOMM表MD001(主件品号)存在於BOM明细临时表中的元件品号且阶数为当前最低
: 层,进入回圈
: while exists(select * from BOMMD where MD001 in (select 元件品号 from
: @tmp_bom where 阶数=@i))
: begin
: --向BOM明细临时表插入BOMMD中MD001与主件品号临时表品号一致的资料(以主件品号
: 临时表左关联BOMMD,存在多对一关系)
: insert into @tmp_bom select MD001,MD003,MD006,@i+1 from
: (select MD001,MD003,MD006 from @tmp_main LEFT join BOMMD on 品号
: =MD001)A where MD001 is not null
: --清空主件品号临时表
: delete from @tmp_main
: --向主件品号临时表插入BOMMD中的主品号存在於BOM明细临时表元件品号的MD003(子
: 品号)
: INSERT INTO @tmp_main SELECT MD003 FROM BOMMD WHERE MD001
: in (select 元件品号 from @tmp_bom where 阶数=@i)
: set @i=@i+1
: end
: select * from @tmp_bom ORDER BY 阶数,元件品号
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.234.143.56 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1568547793.A.475.html
1F:→ tsongs: 直接放进TABLE,SP去读TABLE 09/16 17:37
2F:→ tsongs: 或传参数1,2,3...字串进去拆 09/16 17:42