一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - sqlserver 常用存儲過程集錦

sqlserver 常用存儲過程集錦

2019-11-15 14:54mssql教程網 Sql Server

常用存儲過程集錦,都是一些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系統存儲過程=================== 
–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_updateextendedproperty 'MS_Description', 'this is a test', 'user', dbo, 'table', T2, 'column', id 
–2.修改數據庫名稱 
EXEC sp_renamedb 'old_db_name', 'new_db_name' 
–3.修改數據表名稱和字段名稱 
EXEC sp_rename 'old_table_name', 'new_table_name'–修改數據表名稱 
EXEC sp_rename 'table_name.[old_column_name]', 'new_column_name', 'COLUMN'–修改字段名稱 
–4.給定存儲過程名,獲取存儲過程內容 
exec sp_helptext sp_name 
/*以下是有關安全控制的系統存儲過程或 SQL 語句,詳細語法查閱《聯機叢書》相關內容*/ 
–創建新的 SQL Server 登錄,使用戶得以連接使用 SQL Server 身份驗證的 SQL Server。 
EXEC sp_addlogin @loginame = '', @passwd = '', @defdb = '', @deflanguage = NULL, @sid = NULL, @encryptopt = NULL 
–使 Windows NT 用戶或組帳戶得以使用 Windows 身份驗證連接到 SQL Server。 
EXEC sp_grantlogin @loginame = '' 
–刪除 SQL Server 登錄,以阻止使用該登錄名訪問 SQL Server。 
EXEC sp_droplogin @loginame = '' 
–阻止 Windows NT 用戶或組連接到 SQL Server。 
EXEC sp_denylogin @loginame = '' 
–從 SQL Server 中刪除用 sp_grantlogin 或 sp_denylogin 創建的 Windows NT 用戶或組的登錄項。 
EXEC sp_revokelogin @loginame = '' 
–更改登錄的默認數據庫。 
EXEC sp_defaultdb @loginame = '', @defdb = '' 
–更改登錄的默認語言。 
EXEC sp_defaultlanguage @loginame = '', @language = '' 
–添加或更改 SQL Server 登錄密碼。 
EXEC sp_password @old = '', @new = '', @loginame = '' 
–添加服務器角色新成員。 
EXEC sp_addsrvrolemember @loginame = '', @rolename = '' 
–添加服務器角色某成員。 
EXEC sp_dropsrvrolemember @loginame = '' , @rolename = '' 
–為 SQL Server 登錄或 Windows NT 用戶或組在當前數據庫中添加一個安全帳戶,并使其能夠被授予在數據庫中執行活動的權限(授予默認的“public”數據庫角色)。 
EXEC sp_grantdbaccess @loginame = '', @name_in_db = NULL 
–或 
EXEC sp_adduser @loginame = '', @name_in_db = NULL, @grpname = '' 
–從當前數據庫中刪除安全帳戶。 
EXEC sp_revokedbaccess @name_in_db = '' 
–或 
EXEC sp_dropuser @name_in_db = '' 
–在當前數據庫創建新數據庫角色。 
EXEC sp_addrole @rolename = '', @ownername = '' 
–在當前數據庫刪除某數據庫角色。 
EXEC sp_droprole @rolename = '' 
–在當前數據庫中添加數據庫角色新成員。 
EXEC sp_addrolemember @rolename = '', @membername = '' 
–在當前數據庫中刪除數據庫角色某成員。 
EXEC sp_droprolemember @rolename = '', @membername = '' 
–權限分配給數據庫角色、表、存儲過程等對象 
–1、授權訪問 
GRANT 
–2、拒絕訪問 
DENY 
–3、取消授權或拒絕 
REVOKE 
–4、Sample(pubs): 
GRANT SELECT ON authors TO Limperator 
DENY SELECT ON authors TO Limperator 
REVOKE SELECT ON authors TO Limperator 

====================數據庫還原的存儲過程============ 

復制代碼代碼如下:


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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩精品视频在线观看免费 | 久久精品国产亚洲AV麻豆欧美玲 | 白丝校花被扒开双腿喷水小说 | 男女羞羞的视频 | 精东影业传媒全部作品 | 国色天香社区在线视频免费观看 | 天天综合色天天综合 | 亚洲高清在线视频 | 免费看黄色片的网站 | 无限资源在线观看完整版免费下载 | 国产偷窥女洗浴在线观看亚洲 | 欧美大陆日韩一区二区三区 | 果冻传媒在线观看的 | 波多野结衣护士 | 久草在线福利资站免费视频 | 沟厕okn系列在线播放 | kayden·kross hd在线| 美女班主任下面好爽好湿好紧 | 亚洲毛片网 | 波多野结衣在线免费观看 | 国产成人综合一区人人 | 日日射视频| china中国小帅gayxnxx | 免费特黄一区二区三区视频一 | freehd182d动漫| 国产成人一区二区三区影院免费 | 青草草产国视频 | 99精品热线在线观看免费视频 | 齐天大性之七仙女欲春迅雷链接 | 亚洲精品九色在线网站 | 国产高清在线不卡 | 被老外操| 国产麻豆91网在线看 | 美女撒尿无遮挡免费中国 | 欧洲第一区第二区第三区 | 男男同gayxxx | 国产成人无精品久久久久国语 | 91av手机在线 | 99精品免费在线 | 亚洲AV久久无码精品九九软件 | 亚洲精品第二页 |