zoukankan      html  css  js  c++  java
  • SQLServer中使用javascript脚本验证数据

    SQLServer中用sp_OACreate等一系列系统存储过程可以调用服务器上的Com对象,因此可以通过调用COM使得T-SQL站在巨人的肩膀上,但这需要很高的权限。 比如下面的测试脚本示范了通过调用javascript来实现用正则表达式验证数据表中Email的功能,你如果用过系统函数中类似isdate,isnumeric之类的功能就会去努力尝试用同样方便的方法实现自己的特定验证。

    --如果SQL2005提示没有权限则打开Ole Automation Procedures
    
    --exec sp_configure 'show advanced options',1
    
    --reconfigure
    
    --exec sp_configure 'Ole Automation Procedures',1
    
    --reconfigure
    
    
    
    --测试email
    
    create function isEmail(@value varchar(100))
    
    returns bit
    
    as
    
    begin
    
        declare @object int
    
        declare @v bit
    
        declare @str varchar(8000)
    
        --javascript的正则表达式定义和调用语句
    
        set @str='var reg=/^/w+[/+/./w-]*@([/w-]+/.)*/w+[/w-]*/.([a-z]{2,3}|/d+)$/i;reg.test("'+@value+'")'
    
        --调用脚本组件来执行脚本
    
        exec sp_OACreate 'MSScriptControl.ScriptControl',@object output  
    
        exec sp_OASetProperty @object, 'Language','javascript'
    
        exec sp_OAMethod @object, 'eval', @v out,@str 
    
        --销毁com对象
    
        exec sp_OADestroy @object
    
        return @v
    
    end
    
    go
    
    --测试函数
    
    select * from(
    
        select 'aa.bb.com' as email union
    
        select 'aa@bb.com' union
    
        select 'aa.bb@com' union
    
        select 'aa@bb@com' ) a
    
        where dbo.isEmail(email)=1
    
    go
    
    --删除测试环境
    
    drop function isEmail
    
    go
    
    
    
    /*----------------输出结果
    
    email
    
    ---------
    
    aa@bb.com
    
    -----------------------*/

    Com能够实现的功能很多,有人会用sqlserver调用xmlhttp去获取网页数据,还有人用office组件去做简体和繁体的转换,甚至可以自己开发Com组件,但那样还不如去写扩展存储过程了。

  • 相关阅读:
    DataSource
    Quality in the Test Automation Review Process and Design Review Template
    测试的面临的挑战
    【CSP-S2019模拟】11.11比赛总结
    【CSP-S2019模拟】【Comet OJ 模拟赛Day2T3】11.10比赛总结
    【CSP-S2019模拟】11.08比赛总结
    【Codeforces#599】简要题解
    【简单计数知识2】JZOJ6405. 【NOIP2019模拟11.04】c
    反演学习小计
    【CSP-S2019模拟】11.06比赛总结
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204918.html
Copyright © 2011-2022 走看看