WEB开发网
开发学院数据库MSSQL Server 详解SQLServer 存储过程 阅读

详解SQLServer 存储过程

 2009-07-05 11:35:47 来源:WEB开发网   
核心提示: 可是如果我们对该存储过程加入[ ENCRYPTION ] 那么你将无法看到任何结果 If Object_ID('yangyang8848.OneGoods') Is Not Null Drop Proc yangyang8848.OneGoods Go Create Proc yangyang

  可是如果我们对该存储过程加入[ ENCRYPTION ] 那么你将无法看到任何结果

  If Object_ID('yangyang8848.OneGoods') Is Not Null
       Drop Proc yangyang8848.OneGoods
    Go

  Create Proc yangyang8848.OneGoods
    @GoodsCode2 varchar(10) out,@GoodsCode varchar(10) = '0011'

  With Encryption
    As
       Select * From Master_Goods Where GoodsCode = @GoodsCode
       Set @GoodsCode2 = '0005'
    Go

  然后我们查询 sys.sql_modules 目录视图,将返回给你Null。

  然后我们执行以下SQL: Exec sp_helptext 'yangyang8848.OneGoods'

  你将得到以下结果:The text for object 'yangyang8848.OneGoods' is encrypted.

  说到这里你应该明白了,参数[ ENCRYPTION ]:是一种加密的功能, 将 CREATE PROCEDURE 语句的原始文本转换为模糊格式。模糊代码的输出在 SQL Server 2005 的任何目录视图中都不能直接显示。对系统表或数据库文件没有访问权限的用户不能检索模糊文本。但是,可通过 DAC 端口访问系统表的特权用户或直接访问数据库文件的特权用户可使用此文本。此外,能够向服务器进程附加调试器的用户可在运行时从内存中检索已解密的过程。

  前两天写了一篇关于游标的介绍文章 ,下边写一个例子,将游标与存储过程一起使用上:

  If Object_ID('dbo.GetMasterGoods') Is Not Null
       Drop Proc dbo.GetMasterGoods
    Go

  Create Proc GetMasterGoods
    @MyCursor Cursor Varying Output
    With Encryption
    As
       Set @MyCursor = Cursor
       For
           Select GoodsCode,GoodsName From Master_Goods
    Open @MyCursor
    Go

  --下边建立另外一个存储过程,用于遍历游标输出结果

  Create Proc GetAllGoodsIDAndName
    As

  Declare @GoodsCode varchar(18)
    Declare @GoodsName nvarchar(20)
    Declare @MasterGoodsCursor Cursor
    Exec GetMasterGoods @MasterGoodsCursor out
    Fetch Next From @MasterGoodsCursor
    InTo @GoodsCode,@GoodsName
    While(@@Fetch_Status = 0)
    Begin
       Begin
           Print @GoodsCode + ':' + @GoodsName
       End
       Fetch Next From @MasterGoodsCursor
       InTo @GoodsCode,@GoodsName
    End
    Close @MasterGoodsCursor
    Deallocate @MasterGoodsCursor
    Go

  最后执行Exec GetAllGoodsIDAndName结果为以下内容

  0003:品0003
    0004:品0004
    0005:123123
    0006:品0006
    0007:品0007
    0008:品0008
    0009:品0009
    0010:品0010
    0011:品0011
    0012:品0012
    0013:品0013
    0014:品0014

上一页  1 2 3 

Tags:详解 SQLServer 存储

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接