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

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

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

服務器之家 - 數據庫 - Sql Server - SQL Server常用存儲過程及示例

SQL Server常用存儲過程及示例

2020-01-13 13:08MSSQL教程網 Sql Server

以下是對SQL Server中常用的存儲過程進行了介紹。需要的朋友可以過來參考下

分頁:

復制代碼代碼如下:

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 青青草影院在线观看 | segou视频在线观看 | 丝瓜视频黄色在线观看 | 日本一卡=卡三卡免费 | 国产在线欧美日韩精品一区二区 | 九九免费高清在线观看视频 | 97色伦亚洲自偷 | 国产欧美一区二区三区精品 | 人妖女天堂视频在线96 | 精品国产无限资源免费观看 | 国产精品毛片高清在线完整版 | 504神宫寺奈绪大战黑人 | 亚洲 日韩经典 中文字幕 | 日韩欧美国产免费看清风阁 | 日本伊人色| 高h肉爽文农民工 | 人阁色第四影院在线观看 | 精品国产影院 | 韩国伦理hd | 亚洲卡一卡2卡三卡4麻豆 | 91免费在线 | 精品国产视频 | 91麻豆精东果冻天美传媒老狼 | 成人在线播放视频 | 456在线观看 | 日韩网站在线观看 | 亚洲mv国产精品mv日本mv | 美女被上漫画 | 国产日韩精品一区二区在线观看 | 国产精品微拍 | 俄罗斯年轻男同gay69 | b站免费| 国产一区二区三区四区波多野结衣 | 红楼梦黄色小说 | 5g影院天天爽爽 | 四虎成人免费大片在线 | 狠狠色狠狠色综合曰曰 | 欧美高清免费一级在线 | japanese在线看 | 久久这里只精品热在线18 | 天天做天天爽 |