當前位置:九游会j9娱乐平台-九游ag登录中心网址 » 存儲配置 » foxpro存儲過程

foxpro存儲過程-九游会j9娱乐平台

發布時間: 2024-01-13 09:57:55

1. 資料庫中的存儲過程是什麼

存儲過程是存儲在
.dbc
文件中的
visual
foxpro
代碼,是專門操作資料庫中數據的代碼過程。存儲過程可以提高資料庫的性能,因為在打開一個資料庫時,它們便載入到了內存中。
使用存儲過程主要是為了創建用戶自定義函數,欄位級規則和記錄級有效性規則將引用這些函數。當把一個用戶自定義函數作為存儲過程保存在資料庫中時,函數的代碼保存在
.dbc
文件中,並且在移動資料庫時,會自動隨資料庫移動。使用存儲過程能使應用程序更容易管理,因為可以不必在資料庫文件之外管理用戶自定義函數。

2. 啥叫「存儲過程」啊

存儲過程
存儲過程是保存在資料庫中的專門進行數據操作的代碼過程。存儲過程通常與觸發器結合使用,來控制數據的完整性。在打開資料庫時,存儲過程被自動載入到內存中,可以象其他過程文件一樣進行調用。

1.建立存儲過程
可以在項目管理器中選擇建立或修改存儲過程。在項目管理器的data選項卡中選定stored proceres節點,然後單擊new、add或modify按鈕都將打開存儲過程文本編輯器,如圖7-12所示。

也可以在首先打開資料庫的情況下,執行modify structure命令打開存儲過程文本編輯器。如:

open database dbmydata
modify structure

一個資料庫的所有存儲過程包含在一個文件中,過程使用procedure語句聲明,這與一般的過程文件是完全一樣的。

例如,下面為資料庫建立了一個名為newstuid的存儲過程,該過程為學生檔案表的stuid欄位根據當前stuid中的最大值自動生成一個編號,並保存到stuid欄位中中,如圖7-13所示。

圖7-12 可以在項目管理器選擇建立或修改存儲過程

圖7-13 newstuid存儲過程

執行下面的代碼,將在學生檔案表中添加一條新記錄,並為stuid欄位賦值。

append blank

newstuid() &&執行存儲過程

需要注意的是,如果准備存儲過程用於表的觸發器,則不能包含如圖7-13中所示的calculate、go和replace這些引起記錄移動的命令。

2.從文本文件中導入存儲過程
可以使用append procedures命令將文本文件中的存儲過程以編程的方式添加到當前資料庫中,其語法格式如下:

append procedures from filename [as ncodepage] [overwrite]

其中,filename指定保存存儲過程的文本文件名稱;as ncodepage指定要追加其存儲過程的文本文件要轉換的代碼頁;overwrite指定用文本文件中的過程改寫資料庫中的當前存儲過程,如果不包含此參數,文本文件中的存儲過程將追加到當前存儲過程中。

需要注意的是,在使用該命令前,資料庫必須以獨占方式打開並設置為當前資料庫。

3.將存儲過程導出到文本文件中
可以使用copy procedures命令將當前資料庫中的存儲過程導出到文本文件,其語法格式如下:

copy procedures to filename [as ncodepage] [additive]

其中,filename指定文本文件名,存儲過程將被復制到此文本文件中;as ncodepage指定文本文件的代碼頁;additive指定將存儲過程追加到指定文本文件尾,如果若省略該參數,則覆蓋文本文件的內容。

4.查看資料庫中的存儲過程
可以使用display procedures或list procedures命令顯示當前資料庫中的存儲過程名稱,二者的功能基本相同。其中,display procedures命令的語法格式如下:

display procedures [to printer [prompt] | to file filename] [noconsole]

其中,to printer [prompt]指定將顯示結果輸出到列印機中,包含prompt子句可以在列印開始前顯示一個列印對話框;to file filename指定將顯示結果輸出到filename指定的文件中;noconsole指定不向visual foxpro主窗口或活動的用戶自定義窗口輸出。

例如,下面的代碼將顯示dbmydata資料庫中的存儲過程名稱。

open database dbmydata

display procedures

7.3.6 設置觸發器
觸發器是綁定在表上的表達式,當表中的任何記錄被指定的操作命令修改時,觸發器被激發。當數據修改時,觸發器可執行資料庫應用程序要求的任何其他操作。

觸發器作為特定表的屬性來創建和存儲。如果從資料庫中移去一個表,則同時刪除和該表相關聯的觸發器。從前面的表7-7可以看出,觸發器是在進行了其他所有檢查之後(如有效性規則、主關鍵字的實施,以及null值的實施)被激活,位於所有約束的最後面。並且與欄位級規則和記錄級規則不同,觸發器不對緩沖數據起作用。

1.建立觸發器
可以使用表設計器或create trigger命令來創建觸發器。對於每個表,可為插入、更新及刪除3個事件各創建一個觸發器。在任何情況下,一個表最多隻能有3個觸發器。觸發器必須返回「真」(.t.)或「假」(.f.),只有返回「真」時操作才能繼續進行。能夠激發觸發器的命令如表7-9所示。

表7-9 能夠激發觸發器的命令

觸發器
命令

刪除觸發器
delete命令

插入觸發器
append from、append from array、append blank、import、insert-sql和recall命令

序表

觸發器
命令

更新觸發器
gather、replace、replace from array和update sql命令

需要注意的是,不能對有觸發器的表使用insert命令,但是可以使用insert-sql命令;發出pack或zap不會激發任何觸發器;如果更新具有刪除標記的記錄,不會激發觸發器;如果表使用了緩沖模式,只有當使用tableupdate( )函數進行發送更新時,才激發更新觸發器。

下面是在dbmydata資料庫中建立的4個存儲過程。其中,insertdata用於在添加記錄時顯示一個「新增記錄…」提示;updatedata用於在記錄更新時自動將更新記錄寫入到一個日誌表tblstudent2中,來記錄用戶對學生檔案表所做的修改;deletedata用於在刪除記錄時顯示一個信息框,詢問用戶是否確認刪除記錄;writelog用於寫入日誌,該過程可以接收來自updatedata過程的參數傳入值。

procedure writelog

parameters lcstuid,lcstuname,lcclassname,ldenterdate,lnchinese,lnmaths,lntotal

*!* 將變動寫入到日誌表tblstuden2中

insert into tblstudent2 (stuid,stuname,classname,enterdate,chinese,maths,total) ;

values (lcstuid,lcstuname,lcclassname,ldenterdate,lnchinese,lnmaths,lntotal)

procedure insertdata

wait window "新增記錄..." nowait timeout 2

return .t.

procedure updatedata

wait window "正在將變動寫入日誌表..." nowait timeout 2

writelog(stuid,stuname,classname,enterdate,chinese,maths,total)

return .t.

procedure deletedata

if messagebox("確認刪除該記錄嗎?",4 32," 提示")=6

return .t.

else

return .f.

endif

打開表設計器,在table選項卡的insert trigger、update trigger和delete trigger文本框中分別輸入insertdata()、updatedata()和deletedata(),如圖7-14所示。

圖7-14 為表建立觸發器

也可以使用create trigger命令為表建立觸發器表達式,該命令的語法格式如下:

create trigger on tablename for delete | insert | update as lexpression

其中,tablename是要建立觸發器的表名稱,lexpression是觸發器表達式。例如,下面使用該命令為學生檔案表建立了與圖7-14同樣的觸發器表達式。

open database dbmydata

create trigger on 學生檔案表 for insert as insertdata() &&建立插入觸發器

create trigger on 學生檔案表 for update as updatedata() &&建立更新觸發器

create trigger on 學生檔案表 for delete as deletedata() &&建立刪除觸發器

2.刪除觸發器
可以在表設計器的table選項卡中刪除觸發器或使用delete trigger命令從資料庫表中刪除觸發器。其中,delete trigger命令的語法格式如下:

delete trigger on tablename for delete | insert | update

其中,tablename是要刪除觸發器的表名稱。

例如,下面的代碼將刪除學生檔案表中的插入觸發器。

delete trigger on 學生檔案表 for insert

3.修改觸發器
可以在表設計器的table選項卡中或者使用create trigger命令來修改觸發器。使用命令修改觸發器與建立觸發器時相同。

3. foxpro到底是個什麼軟體,它有什麼用處

visual foxpro是資料庫管理系統,是介於資料庫和用戶的管理系統,集成開發語言,提供資料庫操作前端界面的製作,提供c/s模式開發,提供api和activitx函數和控制項的介面,是開發小型資料庫的前端工具。

資料庫管理系統是一個能夠提供數據錄入、修改、查詢的數據操作軟體,具有數據定義、數據操作、數據存儲與管理、數據維護、通信等功能,且能夠允許多用戶使用。另外,資料庫管理系統的發展與計算機技術發展密切相關。而且近年來,計算機網路逐漸成為人們生活的重要組成部分。

(3)foxpro存儲過程擴展閱讀:

按功能劃分,資料庫管理系統大致可分為6個部分:

(1)模式翻譯:提供數據定義語言(ddl)。用它書寫的資料庫模式被翻譯為內部表示。資料庫的邏輯結構、完整性約束和物理儲存結構保存在內部的數據字典中。資料庫的各種數據操作(如查找、修改、插入和刪除等)和資料庫的維護管理都是以資料庫模式為依據的。

(2)應用程序的編譯:把包含著訪問資料庫語句的應用程序,編譯成在dbms支持下可運行的目標程序。

(3)互動式查詢:提供易使用的互動式查詢語言,如sql.dbms負責執行查詢命令,並將查詢結果顯示在屏幕上。

(4)數據的組織與存取:提供數據在外圍儲存設備上的物理組織與存取方法。

(5)事務運行管理:提供事務運行管理及運行日誌,事務運行的安全性監控和數據完整性檢查,事務的並發控制及系統恢復等功能。

(6)資料庫的維護:為資料庫管理員提供軟體支持,包括數據安全控制、完整性保障、資料庫備份、資料庫重組以及性能監控等維護工具。

熱點內容
發布:2024-01-20 01:08:21 瀏覽:525
發布:2024-01-20 01:07:17 瀏覽:250
愛奇藝正義聯盟為啥不能緩存 發布:2024-01-20 00:52:13 瀏覽:248
caccess查詢資料庫 發布:2024-01-20 00:43:10 瀏覽:769
xp文件夾圖標更改 發布:2024-01-20 00:43:03 瀏覽:19
python和node 發布:2024-01-20 00:37:12 瀏覽:194
android拖拉 發布:2024-01-20 00:00:49 瀏覽:583
少兒編程課程體系介紹 發布:2024-01-20 00:00:48 瀏覽:846
我說你做下載ftp 發布:2024-01-20 00:00:47 瀏覽:8
安卓驅動培訓哪裡好 發布:2024-01-19 23:55:41 瀏覽:987
网站地图