存储过程的使用

=================分页========================== 
/*分页查找数据*/ 

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 codeSQL函数取汉字拼音首字母

create function comm_getpy
( 
    @str nvarchar(4000) 
) 
returns nvarchar(4000) 
as 
begin

declare @word nchar(1),@PY nvarchar(4000)

set @PY=''

while len(@str)>0 
begin 
    set @word=left(@str,1)

    --如果非汉字字符,返回原字符 
    set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901 
               then ( 
                            select top 1 PY 
                            from 
                            ( 
                             select 'A' as PY,N'驁' as word 
                             union all select 'B',N'簿' 
                             union all select 'C',N'錯' 
                     union all select 'D',N'鵽' 
                     union all select 'E',N'樲' 
                     union all select 'F',N'鰒' 
                     union all select 'G',N'腂' 
                     union all select 'H',N'夻' 
                     union all select 'J',N'攈' 
                     union all select 'K',N'穒' 
                     union all select 'L',N'鱳' 
                     union all select 'M',N'旀' 
                     union all select 'N',N'桛' 
                     union all select 'O',N'漚' 
                     union all select 'P',N'曝' 
                     union all select 'Q',N'囕' 
                     union all select 'R',N'鶸' 
                     union all select 'S',N'蜶' 
                     union all select 'T',N'籜' 
                     union all select 'W',N'鶩' 
                     union all select 'X',N'鑂' 
                     union all select 'Y',N'韻' 
                     union all select 'Z',N'咗' 
                      ) T 
                   where word>=@word collate Chinese_PRC_CS_AS_KS_WS 
                   order by PY ASC 
                          ) 
                      else @word 
                 end) 
    set @str=right(@str,len(@str)-1) 
end 
return @PY 
end

 
存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。 1、 存储过程的优点 A、 存储过程允许标准组件式编程 存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程SQL语句。而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。 B、 存储过程能够实现较快的执行速度 如果某一操作包含大量的T-SQL语句代码,分别被多次执行,那么存储过程要比批处理的执行速度快得多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划。而批处理的T-SQL语句每次运行都需要预编译和优化,所以速度就要慢一些。 C、 存储过程减轻网络流量 对于同一个针对数据库对象的操作,如果这一操作所涉及到的T-SQL语句被组织成一存储过程,那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是多条SQL语句。从而减轻了网络流量,降低了网络负载。 D、 存储过程可被作为一种安全机制来充分利用 系统管理员可以对执行的某一个存储过程进行权限限制,从而能够实现对某些数据访问的限制,避免非授权用户对数据的访问,保证数据的安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值