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组件,但那样还不如去写扩展存储过程了。

  • 相关阅读:
    Java实现微生物增殖
    HttpClient学习整理
    在Eclipse中使用JUnit4进行单元测试(初级篇)
    http post提交数组
    postman测试post请求参数为json类型
    【springmvc】传值的几种方式&&postman接口测试
    postman的使用方法详解!最全面的教程
    Gson 使用总结 高级用法
    各个JSON技术的比较(Jackson,Gson,Fastjson)的对比
    Session保存用户名到Session域对象中
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204918.html
Copyright © 2011-2022 走看看