sqlserver 常用儲存過程集錦

2022-03-21 07:13:19 字數 3924 閱讀 5704

常用儲存過程集錦,都是一些mssql常用的一些,大家可以根據需要選擇使用。

***************==分頁*************************=

/*分頁查詢資料*/

create procedure [dbo].[getrecordset]

@strsql varchar(8000),--查詢sql,如select * from [user]

@pageindex int,--查詢當頁號

@pagesize int--每頁顯示記錄

as set nocount on

declare @p1 int

declare @currentpage int

set @currentpage = 0

declare @rowcount int

set @rowcount = 0

declare @pagecount int

set @pagecount = 0

exec sp_cursoropen @p1 output,@strsql,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output --得到總記錄數

select @pagecount=ceiling(1.0*@rowcount/@pagesize) --得到總頁數

,@currentpage=(@pageindex-1)*@pagesize+1

select @rowcount,@pagecount

exec sp_cursorfetch @p1,16,@currentpage,@pagesize

exec sp_cursorclose @p1

set nocount off

go*************************使用者註冊*************************===

/* 使用者註冊,也算是新增吧

*/ create proc [dbo].[useradd]

( @loginid nvarchar(50),     --登入帳號

@password nvarchar(50), --密碼

@email nvarchar(200) --電子信箱

) as

declare @userid int --使用者編號

--登入賬號已經被註冊

if exists(select loginid from tablename where loginid = @loginid)

begin

return -1;

end

--郵箱已經被註冊

else if exists(select email from tablename where email = @email)

begin

return -2;

end

--註冊成功

else

begin

select @userid = isnull(max(userid),100000)+1 from tablename

insert into tablename

(userid,loginid,[password],username,linknum,address,email,createtime,status)

values

(@userid,@loginid,@password,'','','',@email,getdate(),1)

return @userid

end*************************=sql server系統儲存過程***************====

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='拾佰仟萬拾佰仟億'

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,@res+1,1)+substring(@unit,@i,1)+@str

select @res=@temp%10,@temp=@temp/10

set @i=@i+1

end

set @str=substring(@no,@res+1,1)+substring(@unit,@i,1)+@str

set @str=replace(@str,'另拾','另')

set @str=replace(@str,'另佰','另')

set @str=replace(@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:有興趣的朋友可以繼續考慮有小數點以及新增單位(元/角/分)的情況

sqlserver常用的系統儲存過程

1.檢視資料庫的版本 select version 2.檢視資料庫所在機器作業系統引數 exec master.xp msver 3.檢視資料庫啟動的引數 sp configure 4.檢視資料庫啟動時間 selectconvert varchar 30 login time,120 from ma...

sql Server 常用儲存過程的優化

優化儲存過程有很多種方法,下面介紹最常用的7種。1.使用set nocount on選項 我們使用select語句時,除了返回對應的結果集外,還會返回相應的影響行數。使用set nocount on後,除了資料集就不會返回額外的資訊了,減小網路流量。2.使用確定的schema 在使用表,儲存過程,函...

sql server儲存過程

建立表的語句 create table student sno int primary key,sname nvarchar 30 sgentle nvarchar 2 sage int,sbirth smalldatetime,sdept nvarchar 30 drop table studen...