存储过程处理前端选择多值集合

本文介绍了一种处理前端传入数组集合的存储过程实现方式,包括创建临时表、插入数据、循环处理及报表生成。适用于需要根据前端输入动态生成报告的场景。

在存储过程中,有时需要处理前端传入的如数组集合,方法可以参考下面实例:

 

代码
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO



CREATE PROCEDURE [dbo].[usp_FqaVisual_GetWorkPlaceReport]
(    
    
@WorkPlaceCollections NVARCHAR(50--用户选择的场所集合,如:"2,5,6,7"
)
AS

BEGIN
--判断临时表是否存在
    IF OBJECT_ID('#TempWorkPlace'IS NOT NULL
    
--如果存在,首先DROP
        DROP TABLE #TempWorkPlace    
        
--创建临时表
    CREATE TABLE  #TempWorkPlace 
     (   
        ID 
INT IDENTITY(1,1),  --动处产生ID
        WorkPlaceId TINYINT
     )        
END

--宣告变量
DECLARE @N INT,    @ROWS INT,@WorkPlaceId TINYINT
--判断临时表是否有记录存在
IF EXISTS (SELECT * FROM #TempWorkPlace)
--如果有记录存在,首先TRUNCATE所有记录
TRUNCATE TABLE #TempWorkPlace        


SELECT @N = 1            
    
DECLARE @sql NVARCHAR(500)
    
--把用户选择的场所集合插入到临时表中。
    SET @sql ='INSERT INTO #TempWorkPlace([WorkPlaceId]) SELECT '''+ REPLACE(@WorkPlaceCollections,',',''' UNION SELECT'''+''''
    
EXECUTE(@sql)
SELECT @ROWS = @@ROWCOUNT

--下面开始循环临时表
WHILE @N <= @ROWS 
BEGIN
    
SELECT @WorkPlaceId = [WorkPlaceId] FROM #TempWorkPlace WHERE [Id] = @N
    
--这里开始处理与工作场所相关报表
    
    
SET @N = @N + 1                
END    

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值