有表A如下:
Goods_no (列名)
A1003
A2344
B2134
C4567
D8766
.........
有存储过程GetGoods经常需拿表A的值,做作为入参数执行。如下:
exec GetGoods ‘A1003’
exec GetGoods ‘A2344’
exec GetGoods ‘B2134’
求解,存储过程有没有办法批量执行表A中的所有值,无需一条条执行。
求帮忙,谢谢!
------解决思路----------------------
再写个存储过程,里面遍历表中的值,循环调用现在这个存储过程就行啦~
------解决思路----------------------
DECLARE @SQL VARCHAR(8000)--如果是SQL2005+就用VARCHAR(MAX)类似这样
SET @SQL=''
SELECT @SQL=@SQL+'EXEC GetGoods '''+Goods_no+''''+CHAR(13)
FROM TB
PRINT @SQL
------解决思路----------------------
也可通过建立函数的方式,再使用CROSS APPLY连接,如:
创建函数:usp_Fun_GetGoodNo(@good_no NVARCHAR(50)),
可执行如下查询:
SELECT *
FROM A WITH(NOLOCK) AS a
CROSS APPLY(
SELECT * FROM dbo.usp_Fun_GetGoodNo(Goods_no) AS r
) AS b