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

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

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

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

 Alter procedure Pro_procedureName
Alter procedure Pro_procedureName 
 as
as 
 [SQL statements]
[SQL statements]

 //Drop
//Drop
 Drop procedure pro_ProcedureName
Drop procedure pro_ProcedureName
通过阅读,了解到MS-SQLserver 的procedure 是可以加密的
例
 Create procedure P_XXX
Create procedure P_XXX
 with encryption
with encryption
 as
as
 [SQL statements]
[SQL statements]
 go
go
 
对于自定义Procedure,之前没有操作SQL-Server的经验 ,但是写Procedure却是比较熟手的,也是拜高老师所赐吧..
下面是一个之前程序用过的prodecure, 里面包括传入、传出的参数设置。

 /****** Object:  Stored Procedure dbo.pro_CheckAdminLogin    Script Date: 2004-6-4 16:37:25 ******/
/****** Object:  Stored Procedure dbo.pro_CheckAdminLogin    Script Date: 2004-6-4 16:37:25 ******/ CREATE PROCEDURE  pro_CheckAdminLogin
CREATE PROCEDURE  pro_CheckAdminLogin  (
( @username nvarchar(20),
@username nvarchar(20), @password char(32),
@password char(32), @lastloginip char(15),
@lastloginip char(15), @output int output
@output int output )
) AS
 AS
 if exists(Select id from admin where username=@username and password=@password)
if exists(Select id from admin where username=@username and password=@password) begin
    begin 
         update admin set lastLoginIP=@lastloginip,lastlogintime=getdate() where username=@username
        update admin set lastLoginIP=@lastloginip,lastlogintime=getdate() where username=@username set @output=0  --验证通过
        set @output=0  --验证通过 end
    end else
else begin
begin set @output=-1  --帐号密码不正确
    set @output=-1  --帐号密码不正确 end
end
 GO
GO -----------
----------- //
// //Alter
//Alter
 Alter procedure Pro_procedureName
Alter procedure Pro_procedureName  as
as  [SQL statements]
[SQL statements]
 //Drop
//Drop Drop procedure pro_ProcedureName
Drop procedure pro_ProcedureName通过阅读,了解到MS-SQLserver 的procedure 是可以加密的
例
 Create procedure P_XXX
Create procedure P_XXX with encryption
with encryption as
as [SQL statements]
[SQL statements] go
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掌握的就这些 需要反复练习 :)
posted on 2006-01-10 03:59 Royman.Chen 阅读(257) 评论(0) 收藏 举报
 
                     
                    
                 
                    
                 
 
        
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号