存储过程:p_get_new_number

USE [db_NLSOS]
GO
/****** 对象:  StoredProcedure [dbo].[p_get_new_number]    脚本日期: 03/12/2012 11:27:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO



ALTER PROCEDURE [dbo].[p_get_new_number]  

-- ========================================  
-- 获取新的编号
-- ========================================  
-- 参数: 编号的类型
-- 返回值:
-- 注:5次失败尝试。(锁定失败、死锁)  
-- ========================================  

-- 测试数据

-- (需补充)


-- ========================================  

(  
	-- 参数
	@number_category  varChar(1000)  = '' -- 编号类别	
)    
AS    
-- 定义变量    
-------------------------------------------------    
DECLARE    

     @Err           INT            -- 错误编号    
    ,@ErrCounter    INT            -- 错误次数    
    ,@ErrCounterMax INT            -- 最大错误次数    
    ,@code          varChar(1000)  -- 返回代码      
    ,@message       varChar(1000)  -- 返回信息   
	
	-- 声明变量
	declare @new_number varchar(50)

	set @code       = '0'       -- 默认值
	set @message    = 'success' -- 
	set @new_number = '0'       -- 
	
	
-- 存储过程 Start
BEGIN    

-- 事务 Start
BEGIN TRANSACTION TRANS  

    SET @ErrCounter = 0     
    SET @ErrCounterMax = 5    
    
    LockTimeOutRetry: -- 锁定超时入口    
    BEGIN TRY    
	 
        -------------------------------------------------  
		-- 1、更新数值
		-- 2、取得编号
        -------------------------------------------------  
		
		
		-- 1、更新数值
		update t_number 
		set [current_number] = [current_number] + 1 
		where category = @number_category
		
		
		-- 2、取得编号
		select 
			@new_number 
				= [prefix] 
					+ REPLICATE('0',len([format])- len([current_number])) 
					+ cast([current_number] as varchar)
					+ [suffix]
		from t_number
		where category = @number_category
			
			
		
		
			
    END TRY    
	
	
	
	
	
	
    -- 错误检测    
    -------------------------------------------------    
    BEGIN CATCH  
	
        set @Err = @@ERROR   
		
        IF @Err <> 0  
            BEGIN    
                ROLLBACK TRANSACTION TRANS   
                GOTO ErrorHandler      
            END  
			
    END CATCH    
	
    COMMIT TRANSACTION TRANS  
	
    -- Success    
    select 
		 @code    as [code]
		,@message as [message] 
		,@new_number as [new_number]
		
    RETURN    
	
	
	
    
    -- 错误处理    
    -------------------------------------------------    
    ErrorHandler:    
        IF (@err = 1222 OR @err = 1205) AND @ErrCounter >= @ErrCounterMax    
            Begin    
                RAISERROR('Unable to Lock Data after a few attempts.',16,1)    
                set @code = @err    
                SELECT @message =ERROR_MESSAGE()    
            END    
        IF @err = 1222 OR @err = 1205 -- Lock Timeout / Deadlock    
            BEGIN    
                WAITFOR DELAY '00:00:00.25'    
                SET @ErrCounter = @ErrCounter + 1    
                GOTO LockTimeOutRetry    
            END    
			
    -- else unknown error    
	
    set @code = @err
	
    SELECT @message = ERROR_MESSAGE()     
	
    -- RAISERROR( @message ,16,1)    
    select 
		 @code       as [code]
		,@message    as [message]
	
END    

RETURN

-- end    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<template> <div class="hello"> <h1>子任务五:用折柱展示省份平均消费额和地区平均消费额</h1> <div id="chart" style="height: 800px;width: 1600px;"></div> </div> </template> <script> import { onMounted } from 'vue'; import * as echarts from "../src/assets/echarts.min"; import axios from 'axios'; export default{ setup(){ onMounted(()=>{ axios({ method:"post", url:'/api/dataVisualization/selectOrderInfo', data:{ "startTime":"2020-01-01 00:00:00", "endTime":"2020-12-30 00:00:00" } }).then((res)=>{ let da = res.data.data; console.log(da) var nationMap = new Map(); var aderrsMap = new Map(); da.forEach((e)=>{ if(!nationMap.has(e.provinceName)){ nationMap.set(e.provinceName,Number(e.finalTotalAmount/12)) }else{ let sum1 = nationMap.get(e.provinceName) +Number(e.finalTotalAmount/12); nationMap.set(e.provinceName,sum1); } }); da.forEach((e)=>{ if(!aderrsMap.has(e.regionName)){ aderrsMap.set(e.regionName,Number(e.finalTotalAmount/12)) }else{ let sum1 = aderrsMap.get(e.regionName) + Number(e.finalTotalAmount/12); aderrsMap.set(e.regionName,sum1); } }); let arr1 = Array.from(aderrsMap); let sortedArr1 = arr1.sort(function(c,d){ return d[1] - c[1]; }); let arr = Array.from(nationMap); let sortedArr = arr.sort(function(a,b){ return b[1] - a[1]; }); var top_name = []; var top_data = []; sortedArr.slice(0,5).forEach((res)=>{ top_name.push(res[0]); top_data.push(parseFloat(res[1]).toFixed(2)); }); var avg_name = []; var avg_data = []; sortedArr1.slice(0,5).forEach((res)=>{ avg_name.push(res[0]); avg_data.push(parseFloat(res[1]).toFixed(2)); }); var chartDom = document.getElementById("chart"); var myChart = echarts.init(chartDom); const option={ xAxis:[{ type:"category", data:top_name, name:"省份", },{ data:avg_name, name:"地区", } ], yAxis:{ type:"value", name:"平均消费额", }, series:[{ type:"bar", data:top_data, },{ type:"line", data:avg_data, } ] }; console.log(top_name); console.log(top_data); console.log(avg_name); console.log(avg_data); option && myChart.setOption(option,true); }).catch((err)=>{ console.log(err); }) }) } } </script>对每行代码的作用做出详细的注释,并且表明这段代码为什么要这么写
07-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值