数据库:加密存储过程
来源:优易学  2011-9-11 12:41:14   【优易学:中国教育考试门户网】   资料下载   IT书店
  如何简单的创建一个加密存储过程:
  create proc Test
  (参数列表)
  with encription
  as
  主体
  go
  为了演示,现在我们创建一个具备各种参数类型的存储过程作为测试:
  create proc Test
  (
  @x int = 3,
  @s nvarchar(20),
  @y int output
  )
  with encryption
  as
  select @x, @s
  set @y = 5
  return 1
  go这个存储过程具备了输入参数,输出参数,返回值。
  (关于返回值的题外话:返回值只能是 int 类型或者没有。默认情况下,系统存储过程都返回 0 表示调用成功,其他非零值表示失败。用户自定义的存储过程可以返回任意整数值)
  现在调用一下这个存储过程试试:
  declare @y int, @r int
  exec @r = test 9, ’Hello’, @y output
  select @y
  select @r
  再来看一下这个存储过程的注释:
  SELECT c.id, c.text
  FROM syscomments c INNER JOIN sysobjects o
  ON c.id = o.id
  WHERE o.name = ’Test’可以发现是一些加密了之后的乱码。
  如何得到加密存储过程的参数列表信息呢?有两个办法:
  方法A:
  select * from information_schema.parameters
  where specific_name = ’Test’这个方法返回的结果集里没有包含返回值的信息。
  方法B:
  sp_procedure_params_rowset ’Test’, 1, ’dbo’这个语句返回的比上面那个多一行返回值信息。
  注意到他们返回的其他列信息也不同。比如 PROCEDURE_NAME(存储过程名),方法B返回的是:
  Test;1
  后面这个 1 表示 Group Number.

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训