·¢²©ÎÄ
ÔÂÒ¹ÎÒ·ÉÏè

http://blog.chinaunix.net/space.php?uid=217463

³õ´ÓÎÄ£¬¶þÊ®ÔØÎ´ÖУ»ºóϰÎ䣬У³¡·¢Ò»Ê¸£¬ÖйÄÀô£¬Öð£»ËìIT¡«¡«¡«¡«¡«¡«¡«¡«¡«¡«¡«¡«¡«¡«¡«    
¸öÈË×ÊÁÏ
  • ²©¿Í·ÃÎÊ£º203197
  • ²©ÎÄÊýÁ¿£º54
  • ²©¿Í»ý·Ö£º5010
  • ²©¿ÍµÈ¼¶£º´óУ
  • ×¢²áʱ¼ä£º2006-07-03 08:02:49
¶©ÔÄÎҵIJ©¿Í
  • ¶©ÔÄ
  • ¶©Ôĵ½Ïʹû
  • ¶©Ôĵ½×¥Ïº
  • ¶©Ôĵ½Google
×ÖÌå´óС£º´ó ÖРС²©ÎÄ
sql´æ´¢¹ý³Ì (2009-10-01 13:00)


sqlserver ³£Óô洢¹ý³Ì¼¯½õ

×÷Õß: jzxue, ¡¡³ö´¦:ITר¼ÒÍøÂÛ̳,¡¡ÔðÈα༭: ³Â×Óç÷,¡¡
2009-09-30 07:00
¡¡¡¡³£Óô洢¹ý³Ì¼¯½õ£¬¶¼ÊÇһЩmssql³£ÓõÄһЩ£¬´ó¼Ò¿ÉÒÔ¸ù¾ÝÐèҪѡÔñʹÓá£

¡¡¡¡³£Óô洢¹ý³Ì¼¯½õ,¶¼ÊÇһЩ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



¡¡¡¡¨C1.¸ø±íÖÐ×Ö¶ÎÌí¼ÓÃèÊöÐÅÏ¢ 
¡¡¡¡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 
¡¡¡¡¨C2.ÐÞ¸ÄÊý¾Ý¿âÃû³Æ 
¡¡¡¡EXEC sp_renamedb 'old_db_name', 'new_db_name' 
¡¡¡¡¨C3.ÐÞ¸ÄÊý¾Ý±íÃû³ÆºÍ×Ö¶ÎÃû³Æ 
¡¡¡¡EXEC sp_rename 'old_table_name', 'new_table_name'¨CÐÞ¸ÄÊý¾Ý±íÃû³Æ 
¡¡¡¡EXEC sp_rename 'table_name.[old_column_name]', 'new_column_name', 'COLUMN'¨CÐÞ¸Ä×Ö¶ÎÃû³Æ 
¡¡¡¡¨C4.¸ø¶¨´æ´¢¹ý³ÌÃû£¬»ñÈ¡´æ´¢¹ý³ÌÄÚÈÝ 
¡¡¡¡exec sp_helptext sp_name 
¡¡¡¡/*ÒÔÏÂÊÇÓйذ²È«¿ØÖƵÄϵͳ´æ´¢¹ý³Ì»ò SQL Óï¾ä£¬ÏêϸÓï·¨²éÔÄ¡¶Áª»ú´ÔÊé¡·Ïà¹ØÄÚÈÝ*/ 
¡¡¡¡¨C´´½¨ÐµĠSQL Server µÇ¼£¬Ê¹Óû§µÃÒÔÁ¬½ÓʹÓàSQL Server Éí·ÝÑéÖ¤µÄ SQL Server¡£ 
¡¡¡¡EXEC sp_addlogin @loginame = '', @passwd = '', @defdb = '', @deflanguage = NULL, @sid = NULL, @encryptopt = NULL 
¡¡¡¡¨Cʹ Windows NT Óû§»ò×éÕÊ»§µÃÒÔʹÓàWindows Éí·ÝÑéÖ¤Á¬½Óµ½ SQL Server¡£ 
¡¡¡¡EXEC sp_grantlogin @loginame = '' 
¡¡¡¡¨Cɾ³ý SQL Server µÇ¼£¬ÒÔ×èֹʹÓøõǼÃû·ÃÎÊ SQL Server¡£ 
¡¡¡¡EXEC sp_droplogin @loginame = '' 
¡¡¡¡¨C×èÖ¹ Windows NT Óû§»ò×éÁ¬½Óµ½ SQL Server¡£ 
¡¡¡¡EXEC sp_denylogin @loginame = '' 
¡¡¡¡¨C´Ó SQL Server ÖÐɾ³ýÓàsp_grantlogin »ò sp_denylogin ´´½¨µÄ Windows NT Óû§»ò×éµÄµÇ¼Ïî¡£ 
¡¡¡¡EXEC sp_revokelogin @loginame = '' 
¡¡¡¡¨C¸ü¸ÄµÇ¼µÄĬÈÏÊý¾Ý¿â¡£ 
¡¡¡¡EXEC sp_defaultdb @loginame = '', @defdb = '' 
¡¡¡¡¨C¸ü¸ÄµÇ¼µÄĬÈÏÓïÑÔ¡£ 
¡¡¡¡EXEC sp_defaultlanguage @loginame = '', @language = '' 
¡¡¡¡¨CÌí¼Ó»ò¸ü¸Ä SQL Server µÇ¼ÃÜÂë¡£ 
¡¡¡¡EXEC sp_password @old = '', @new = '', @loginame = '' 
¡¡¡¡¨CÌí¼Ó·þÎñÆ÷½ÇɫгÉÔ±¡£ 
¡¡¡¡EXEC sp_addsrvrolemember @loginame = '', @rolename = '' 
¡¡¡¡¨CÌí¼Ó·þÎñÆ÷½Çɫij³ÉÔ±¡£ 
¡¡¡¡EXEC sp_dropsrvrolemember @loginame = '' , @rolename = '' 
¡¡¡¡¨CΪ SQL Server µÇ¼»ò Windows NT Óû§»ò×éÔÚµ±Ç°Êý¾Ý¿âÖÐÌí¼ÓÒ»¸ö°²È«ÕÊ»§£¬²¢Ê¹ÆäÄܹ»±»ÊÚÓèÔÚÊý¾Ý¿âÖÐÖ´ÐлµÄȨÏÞ(ÊÚÓèĬÈϵġ°public¡±Êý¾Ý¿â½ÇÉ«)¡£ 
¡¡¡¡EXEC sp_grantdbaccess @loginame = '', @name_in_db = NULL 
¡¡¡¡¨C»ò 
¡¡¡¡EXEC sp_adduser @loginame = '', @name_in_db = NULL, @grpname = '' 
¡¡¡¡¨C´Óµ±Ç°Êý¾Ý¿âÖÐɾ³ý°²È«ÕÊ»§¡£ 
¡¡¡¡EXEC sp_revokedbaccess @name_in_db = '' 
¡¡¡¡¨C»ò 
¡¡¡¡EXEC sp_dropuser @name_in_db = '' 
¡¡¡¡¨CÔÚµ±Ç°Êý¾Ý¿â´´½¨ÐÂÊý¾Ý¿â½ÇÉ«¡£ 
¡¡¡¡EXEC sp_addrole @rolename = '', @ownername = '' 
¡¡¡¡¨CÔÚµ±Ç°Êý¾Ý¿âɾ³ýijÊý¾Ý¿â½ÇÉ«¡£ 
¡¡¡¡EXEC sp_droprole @rolename = '' 
¡¡¡¡¨CÔÚµ±Ç°Êý¾Ý¿âÖÐÌí¼ÓÊý¾Ý¿â½ÇɫгÉÔ±¡£ 
¡¡¡¡EXEC sp_addrolemember @rolename = '', @membername = '' 
¡¡¡¡¨CÔÚµ±Ç°Êý¾Ý¿âÖÐɾ³ýÊý¾Ý¿â½Çɫij³ÉÔ±¡£ 
¡¡¡¡EXEC sp_droprolemember @rolename = '', @membername = '' 
¡¡¡¡¨CȨÏÞ·ÖÅ䏸Êý¾Ý¿â½ÇÉ«¡¢±í¡¢´æ´¢¹ý³ÌµÈ¶ÔÏó 
¡¡¡¡¨C1¡¢ÊÚȨ·ÃÎÊ 
¡¡¡¡GRANT 
¡¡¡¡¨C2¡¢¾Ü¾ø·ÃÎÊ 
¡¡¡¡DENY 
¡¡¡¡¨C3¡¢È¡ÏûÊÚȨ»ò¾Ü¾ø 
¡¡¡¡REVOKE 
¡¡¡¡¨C4¡¢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
³£Óô洢¹ý³Ì¼¯½õ£¬¶¼ÊÇһЩmssql³£ÓõÄһЩ£¬´ó¼Ò¿ÉÒÔ¸ù¾ÝÐèҪѡÔñʹÓá£


¡¡¡¡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£ºÓÐÐËȤµÄÅóÓÑ¿ÉÒÔ¼ÌÐø¿¼ÂÇÓÐСÊýµãÒÔ¼°Ìí¼Óµ¥Î»(Ôª/½Ç/·Ö)µÄÇé¿ö

Ç×£¬Äú»¹Ã»ÓеǼ,Çë[µÇ¼]»ò[×¢²á]ºóÔÙ½øÐÐÆÀÂÛ