Procedure 存储过程

无疑,Procedure是一重大课题 。。
对于自定义Procedure,之前没有操作SQL-Server的经验 ,但是写Procedure却是比较熟手的,也是拜高老师所赐吧..
下面是一个之前程序用过的prodecure, 里面包括传入、传出的参数设置。

/****** Object:  Stored Procedure dbo.pro_CheckAdminLogin    Script Date: 2004-6-4 16:37:25 ******/
CREATE   PROCEDURE   pro_CheckAdminLogin 
(
@username   nvarchar ( 20 ),
@password   char ( 32 ),
@lastloginip   char ( 15 ),
@output   int  output
)
 
AS

if   exists ( Select  id  from  admin  where  username = @username   and  password = @password )
    
begin
        
        
update  admin  set  lastLoginIP = @lastloginip ,lastlogintime = getdate ()  where  username = @username
        
set   @output = 0    -- 验证通过
     end
else
begin
    
set   @output =- 1    -- 帐号密码不正确
end

GO
-- ---------
//
// Alter

Alter   procedure  Pro_procedureName 
as  
[ SQL statements ]

// Drop
Drop   procedure  pro_ProcedureName

通过阅读,了解到MS-SQLserver 的procedure 是可以加密的

Create   procedure  P_XXX
with  encryption
as
[ SQL statements ]
go


Procedure的好处:
系统有预编译 即编译1次,大大提高效益
某些业务规则可在procedure里面完成, 方便修改(不需改源前后台程序)
当然,还有我才知道的加密--安全性提高 Encryption

SQL-server还提供系统Procedure(sp_)和扩展Procedure(xp_)

利用系统存储过程新添用户的例子:


EXEC sp_addlogin 'LALA_ConnectName','PWD','DB_Name'
go

----

相对也明白了,具有SA权限后 利用扩展Procedure可以操作windows命令行解释器,

Use Master [<--Master数据库是 SQL-server存放系统procedure的数据库]
go
EXEC xp_cmdShell 'dir C:\*.exe'

这个XP_CmdShell就是在SQLserver系统执行命令行的方法

估计前段时间Hack最多的SQL injected,多半是成功注入后利用这里进行下一步权限探讨..

你可能感兴趣的:(procedure)