加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver存储过程集锦(二)

发布时间:2020-12-12 15:33:17 所属栏目:MsSql教程 来源:网络整理
导读:sqlserver存储过程集锦(二) ====================数据库还原的存储过程============ SQL code create proc killspid (@dbname varchar(20)) as begin declare @sql nvarchar(500) declare @spid int set @sql='declare getspid cursor for select spid fro

sqlserver存储过程集锦(二)

  ====================数据库还原的存储过程============

  SQL code
  create proc killspid (@dbname varchar(20))
  as
  begin
  declare @sql nvarchar(500)
  declare @spid int
  set @sql='declare getspid cursor for
  select spid
  from sysprocesses
  where dbid=db_id('''+@dbname+''')'
  exec (@sql)
  open getspid
  fetch next from getspid
  into @spid
  while @@fetch_status <>-1
  begin
  exec('kill '+@spid)
  fetch next from getspid
  into @spid
  end
  close getspid
  deallocate getspid
  end
  GO

  作用:杀掉传入数据库中的活动进程以进行备份还原等独占操作

  ===================阿拉伯数字转大写中文=============

  例:输入12345,程序给出:壹万贰仟叁佰肆拾伍

  例:输入10023040,程序给出:壹仟另贰万叁仟另肆拾

  解决方案之一(在SqlServer2000中测试通过):

  SQL code
  CREATE FUNCTION fun_cgnum
  (@num INT)
  RETURNS VARCHAR(100)
  AS
  BEGIN
  DECLARE @temp INT,@res INT,@i TINYINT
  DECLARE @str VARCHAR(100),@no VARCHAR(20),@unit VARCHAR(16)
  SELECT @str='',@no='另壹贰叁肆伍陆柒捌玖',@unit='拾佰仟万拾佰仟亿'
  SET @temp=@num

  SELECT @i=0,@res=@temp%10,@temp=@temp/10
  WHILE @temp>0
  BEGIN
  IF @i=0
  SET @str=SUBSTRING(@no,@res+1,1)
  ELSE
  SET @str=SUBSTRING(@no,1)+SUBSTRING(@unit,@i,1)+@str
  SELECT @res=@temp%10,@temp=@temp/10
  SET @i=@i+1
  END
  SET @str=SUBSTRING(@no,1)+@str
  SET @str=REPLACE(@str,'另拾','另')
  SET @str=REPLACE(@str,'另佰','另仟','另万','万')
  WHILE @i>0
  BEGIN
  SET @str=REPLACE(@str,'另另','另')
  SET @i=CHARINDEX('另另',@str)
  END
  SET @str=REPLACE(@str,'万')
  SET @str=REPLACE(@str,'亿万','亿')
  IF RIGHT(@str,1)='另'
  SET @str=LEFT(@str,LEN(@str)-1)
  RETURN @str
  END
  GO

  --测试:有0和没有0的情况

  SELECT dbo.fun_cgnum(900000000),dbo.fun_cgnum(903002051),dbo.fun_cgnum(903002050)

  PS:有兴趣的朋友可以继续考虑有小数点以及添加单位(元/角/分)的情况

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读