Mssql常用儲存過程集錦

2021-07-10 17:47:54 字數 4335 閱讀 1853

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

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

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

/*分頁查詢資料*/ 

create procedure [dbo].[getrecordset] 

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

@pageindexint,--查詢當頁號 

@pagesize int--每頁顯示記錄 

assetnocount 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),     --登入帳號 

@passwordnvarchar(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

系統儲存過程***************====

–1.給表中字段新增描述資訊 

createtablet2 (idint

********************資料庫還原的儲存過程**********==

sql code

create proc killspid (@dbname varchar(20)) 

as begin 

declare @sql nvarchar(500) 

declare @spidint

set@sql='declare getspidcursorfor 

select spid 

from sysprocesses 

where dbid=db_id('''+@dbname+''')' 

exec (@sql) 

open getspid 

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

常用sql儲存過程集錦

1.給表中字段新增描述資訊 create table t2 id int,name char 20 go exec sp addextendedproperty ms description employee id user dbo,table t2,column id exec sp update...

sqlserver 常用儲存過程集錦

常用儲存過程集錦,都是一些mssql常用的一些,大家可以根據需要選擇使用。分頁 分頁查詢資料 create procedure dbo getrecordset strsql varchar 8000 查詢sql,如select from user pageindex int,查詢當頁號 pages...

MSSQL儲存過程

sqlserver 帶有返回值,儲存過程同時新增兩張表,並將第一張表的主鍵插入第二張表當中 2010 07 04 22 00 55 分類 sql 字型大小 訂閱 sql server 中,可以使用 scope identity identity ident current 來取得最後插入記錄的值值,...