明天就大了

勇敢的心

10进制整数转换为2~36任意进制数存储过程

/* 
 ========================================================
 Procedure: usp_ConvertIntTo
 Description: Convert a number to 1~36
 Creation Date: 2005-4-25
 Author:  Frank Xie
 ========================================================
 Revision History
 ========================================================
 Rev Date  Description
 ========================================================
 1 2005-4-25 Generated by Frank Xie
 ========================================================
 
DECLARE @DD VARCHAR(50)
EXEC usp_ConvertIntTo 55,36,@DD OUTPUT
PRINT @DD
*/

CREATE PROCEDURE usp_ConvertIntTo
(
 @aNumber INT = 0,  --需转换的10进制数
 @convertType INT = 10,  --需要转变为的进制
 @result VARCHAR(50) OUTPUT --返回的转变后的值
)
AS
BEGIN
 DECLARE @List VARCHAR(36)
 DECLARE @yushu INT
 DECLARE @shang INT

 IF @convertType > 36
 BEGIN
  RAISERROR ('@convertType must less then 36', 16, 1)
  return -1
 END
 ELSE
 BEGIN
  IF @convertType < 1
  BEGIN
   RAISERROR ('@convertType must lager then 1', 16, 1)
   return -1
  END
 END
  
 
 IF @result IS NULL
  SET @result = ''

 SET @List = '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'

 SET @yushu = @aNumber % @convertType

 IF @yushu > 0
  SET @result = SubString(@List,@yushu,1) + @result
 ELSE
 BEGIN
  IF @result <> '0'
   SET @result = '0' + @result
 END

 SET @shang = @aNumber / @convertType

 IF @shang >= @convertType
 BEGIN
  DECLARE @RES INT
  EXEC @RES = usp_ConvertIntTo @shang,@convertType,@result OUTPUT

  IF @RES = -1
   RETURN -1
 END
 ELSE
  SET @result = SubString(@List,@shang,1) + @result

 return 0
END

阅读更多
上一篇SQL语句导入导出大全
下一篇Oracle SQL*PLUS命令的使用大全
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭