常用儲存過程集錦,都是一些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...