1. 程式人生 > >powerdesigner中運用vbscript批量生成觸發器指令碼

powerdesigner中運用vbscript批量生成觸發器指令碼

pd中設計工作中經常有些工作需要批量執行修改,採用其自帶的指令碼語言是個不錯的選則,下面這段指令碼根據表結構的查詢需要生成oracle的觸發器的列,對其生成相應的觸發期指令碼,可以直接執行


Option Explicit
ValidationMode = True
InteractiveMode = im_Batch
''ceaate by runnerrunning
' get the current active model
Dim mdl ' the current model
Set mdl = ActiveModel

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

   Dim aaa

   Set aaa = fso.OpenTextFile ("c://aaaa1.TXT", 2, True)'ceaate by runnerrunning
   If aaa is Nothing then
   output "errors file"
   return
   end if

If (mdl Is Nothing) Then
   MsgBox "There is no Active Model"
Else
   ListObjects(mdl)
   aaa.close
End If

'-----------------------------------------------------------------------------
' Sub procedure to scan current package and print information on objects from current package
' and call again the same sub procedure on all children pacakge
' of the current package
'-----------------------------------------------------------------------------
Private Sub ListObjects(fldr) '列出所有的物件
   'output "Scanning " & fldr.code
   Dim obj ' running object
   For Each obj In fldr.children
      ' Calling sub procedure to print out information on the object
      'DescribeObject obj
      TableSetComment obj'ceaate by runnerrunning
   Next

//本人原創[email protected]轉載請保留本資訊
//http://blog.csdn.net/runnerrunning
//大家看了別忘了點右邊的廣告阿支援一下[email protected]

   ' go into the sub-packages
   Dim f ' running folder
   For Each f In fldr.Packages '遞迴呼叫列出所有的物件
      'calling sub procedure to scan children package
      ListObjects f
   Next
End Sub
'ceaate by runnerrunning
'-----------------------------------------------------------------------------
' Sub procedure to print information on current object in output
'-----------------------------------------------------------------------------
Private Sub DescribeObject(CurrentObject)
   if not CurrentObject.Iskindof(cls_NamedObject) then exit sub
   'output "Found "+CurrentObject.ClassName+" """+CurrentObject.Name+""", Created by "+CurrentObject.Creator+" On "+Cstr(CurrentObject.CreationDate)  
End Sub
'ceaate by runnerrunning
Private Sub TableSetComment(CurrentObject)
   if not CurrentObject.Iskindof(cls_Table) then exit sub
   'output "Found "+CurrentObject.ClassName+" """+CurrentObject.Name+""", Created by "+CurrentObject.Creator+" On "+Cstr(CurrentObject.CreationDate)  
      if not CurrentObject.isShortcut then
         Dim col ' running column
         for each col in CurrentObject.columns
            if UCase(col.code)="MDF_TM" THEN
               'output CurrentObject.NAME
               'OUTPUT RIGHT(CurrentObject.CODE,LEN(CurrentObject.CODE) - 1)
              
               'OUTPUT
               'OUTPUT "--表"&CurrentObject.NAME&" MDF_TM BEFORE UPDATE 觸發器"
               'OUTPUT "--TR_MDF_"&CurrentObject.CODE&"_1"
               'OUTPUT "DROP TRIGGER TR_MDF_"&CurrentObject.CODE&"_1"
               'OUTPUT "/"
               'OUTPUT "--  BEFORE UPDATE TRIGGER TR_MDF_"&CurrentObject.CODE&"_1 FOR TABLE "&CurrentObject.CODE
               'OUTPUT "CREATE TRIGGER TR_MDF_"&CurrentObject.CODE&"_1 BEFORE UPDATE"
               'OUTPUT "ON "&CurrentObject.CODE&" FOR EACH ROW"
               'OUTPUT "BEGIN"
               'OUTPUT " :NEW.MDF_TM := SYSDATE;"
               'OUTPUT "END;"
               'OUTPUT "/"
              
               aaa.WriteLine("")
               aaa.WriteLine( "--表"&CurrentObject.NAME&" MDF_TM BEFORE UPDATE 觸發器")
               aaa.WriteLine( "--TR_MDF_"&CurrentObject.CODE&"_1")
               aaa.WriteLine( "DROP TRIGGER TR_MDF_"&CurrentObject.CODE&"_1")
               aaa.WriteLine( "/")
               aaa.WriteLine( "--  BEFORE UPDATE TRIGGER TR_MDF_"&CurrentObject.CODE&"_1 FOR TABLE "&CurrentObject.CODE )
               aaa.WriteLine( "CREATE TRIGGER TR_MDF_"&CurrentObject.CODE&"_1 BEFORE UPDATE")
               aaa.WriteLine( "ON "&CurrentObject.CODE&" FOR EACH ROW")
               aaa.WriteLine( "BEGIN")
               aaa.WriteLine( " :NEW.MDF_TM := SYSDATE;")
               aaa.WriteLine( "END;")
               aaa.WriteLine( "/")
              
            END IF
         next
      end if  
  
End Sub
//本人原創

[email protected]轉載請保留本資訊
//http://blog.csdn.net/runnerrunning
//大家看了別忘了點右邊的廣告阿支援一下[email protected]

相關推薦

powerdesigner運用vbscript批量生成觸發器指令碼

pd中設計工作中經常有些工作需要批量執行修改,採用其自帶的指令碼語言是個不錯的選則,下面這段指令碼根據表結構的查詢需要生成oracle的觸發器的列,對其生成相應的觸發期指令碼,可以直接執行 Option ExplicitValidationMode = TrueInterac

PowerDesigner使用vbscript訪問物件進行批量操作

Power Designer是資料建模中一個比較常用的工具,比較擅長大規模的E-R模型的設計。對於一些批量操作,可以通過vbscript指令碼進行。用法:開啟物理模型,點選選單“Tools->Execute Commands -> Edit/Run Script...",或者快捷鍵(Ctr

openvpn 批量生成使用者指令碼

#/bin/bash for user in "[email protected]" do echo "新增使用者:$user" if [ -d "/etc/openvpn/client/$user" ] then rm -rf /etc/openvpn/client/$user rm -rf

PowerDesignername與comment互相轉換指令碼

 PowerDesigner中批量根據物件的name生成comment的指令碼執行方法:Open PDM -- Tools -- Execute Commands -- Run ScriptVb script程式碼  Option Explicit   Validatio

excel批量生成圖表的指令碼

經常要根據一堆資料生成各種bug曲線的報表,所以就抽時間完成了這個指令碼,有需求的可以拿去自行修改Function getcolname(ByVal intcol As Long) intcol = intcol - 1 getcolname = IIf(i

powerDesigner將name信息生成到備註,導出語句有備註信息

sql 情況 blank idt comm 說明 -1 建表 twitter name註釋信息 在創建pdm時由於需要在name列填寫的是以後要在表中創建的註釋信息,comment中則寫的說明信息字數比較多。默認情況下在生成建表sql時不能將name生成註釋信息,進行如下設

瑯條碼打印軟件如何批量生成條碼

過程 對象管理 修改 繪制 文件 生成二維碼 下一步 符號 打印機 在使用中瑯領跑條碼打印軟件制作商品標簽過程中,經常需要大批量的根據我們的條碼數據,批量生成條形碼。一般來說這些數據是根據中國物品編碼中心下發的廠商識別代碼,加上商品標簽申請單位商品的一些信息數字組合而成,為

jmeter批量生成token時,怎麼樣把得到的token放在本地文字

需求:100個使用者登陸,要拿到100個token,這裡怎麼辦? 1,   2,100個併發,開始執行   3,指令碼如下: import org.json.*;  import java.util.Arrays;  import or

Java基礎-----從Excel獲取資料生成shell指令碼

前言 java讀取Excel的驅動包: 連結:https://pan.baidu.com/s/1ejCR9sS2OUmttFYpQnJkKQ 提取碼:58rm 實現1: 從Excel中讀取表名,由於每個欄位會對應一個表名,故讀取的某列會有若干個連續的表名出現,所以用set集合

Python指令碼批量生成SQL語句

通過Python指令碼批量生成插入資料的SQL語句 原始SQL語句: INSERT INTO system_user (id, login_name, name, password, salt, code, createtime, email, main_org, positio

PowerDesign16.6支援Mysql的生成sql指令碼包含Collate資訊

當前powerDesign版本:16.6 列上指定:Collation = utf8_general_ci 但是SQL指令碼中,列欄位沒有顯示Collect ------------------------------------------------------------- 工具欄-》

PowerDesignerSQL檔案、資料庫表反向生成PDM

1      反向生成PDM 1)        建立一個空的PDM模型(選擇對應的DBMS):   2)  &

SQL Server分離附加資料及生成SQL指令碼

    一:分離 1.首先開啟SQL Server  2.選中要分離的使用者資料庫(此處以SchoolDB)做為示例 3.右鍵單擊(任務-----分離)    4.選中"刪除連線","更新統計資訊",然後點選確定,分離成功之後資料庫就

powerdesigner執行SQL.通過SQL生成模型圖

方法:  在powerdesigner中.選擇file----reverse engine--->database--->選擇相應的資料庫版本,再把SQL匯入執行即可. 轉自:http://hbin8668.blog.163.com/blog/static/178844311201210

PowerDesigner利用oracle11gR2的表逆向生成物理模型

今天要做多表查詢,奈何資料庫中就給了我一些表,什麼關係也沒顯現,於是想到老師以前提到的prowerdesigner的逆向工程。於是網上搜資料,本來看網上資料覺得挺快的,不到10步就搞定,結果個個都是大

PL/SQL 批量生成匯出Oracle方法、儲存方法的指令碼

1,首先開啟PL/SQL 工具,點選“Tools”-“Export User Objects”選單,開啟“選擇”對話方塊。 2,在“選擇”對話方塊中,在“User”區域,選擇當前“使用者”   3,選擇使用者(本例為LXJ),在選擇相關方法,然後點選“選擇

批量生成python自動化測試指令碼

  先前有家供應商與我們合作開發自動化工程,採用的py unittest作為指令碼執行框架。我發現他們出的指令碼都是挨個手寫的,格式上也是參差不齊。所以有了根據用例表批量生成指令碼的一段小程式碼 供應商提供的測試指令碼 貼一個經刪減修飾後的指令碼程式碼舉例(因原指令碼很難看,我有程式碼整潔強迫症

自動批量生成AWR報告的指令碼

這個指令碼可以批量生成多個AWR指令碼,只要指定資料庫名(RAC環境應該是例項名)和時間段。如 C:/TEMP>perl dba_oracle_awr.pl --instance O02PAW1A --from 201103020700 --to 20110302180

利用python指令碼批量生成測試資料並插入資料庫

測試工作中有時候需要做一些假的測試資料,有些資料很多,上千條,手工做的話能累到你懷疑人生!這時候就該想到可以利用python指令碼來實現啦方法一:先寫入txt 然後用sql迴圈執行1.首先python連結資料庫有第三方的庫首先你要安裝pymysql(連結mysql用的),安裝

excel 批量生成mysql的腳本

concat 方法 成了 系統 列數 大數據 a10 一個 val 一、假設你的表格有A、B、C三列數據,希望導入到你的數據庫中表格table,對應的字段分別是col1、col2、col3 二、在你的表格中增加一列,利用excel的公式自動生成sql語句,具體方法如下: 1