程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQLServer中使用javascript腳本驗證數據

SQLServer中使用javascript腳本驗證數據

編輯:關於SqlServer

  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 '[email protected]' union
  select 'aa.bb@com' union
  select 'aa@bb@com' ) a
  where dbo.isEmail(email)=1
go
--刪除測試環境
drop function isEmail
go
/*----------------輸出結果
email
---------
[email protected]
-----------------------*/

  Com能夠實現的功能很多,有人會用sqlserver調用XMLhttp去獲取網頁數據,還有人用Office組件去做簡體和繁體的轉換,甚至可以自己開發Com組件,但那樣還不如去寫擴展存儲過程了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved