VFP中調(diào)用Oracle的存儲(chǔ)過(guò)程

字號(hào):

VFP由于其通俗、易用,深受廣大開(kāi)發(fā)人員的歡迎,但其安全性與穩(wěn)定性卻不十分完善。而Oracle在此方面的優(yōu)點(diǎn)是有口皆碑的,兩者結(jié)合,能開(kāi)發(fā)出高效、安全和穩(wěn)定的應(yīng)用系統(tǒng)。有關(guān)在VFP中調(diào)用Oracle存儲(chǔ)過(guò)程方法的資料較少,下面就此舉一簡(jiǎn)單例子,希望起到拋磚引玉的作用。此方法適用于用VFP作前端開(kāi)發(fā)工具、Oracle作后端數(shù)據(jù)庫(kù)的C/S開(kāi)發(fā)方法。
    在Oracle端,建有如下表和存儲(chǔ)過(guò)程:
    表gzb如下:
    SQL〉select * from gzb; ID
    GZ
    1
    3050
    3
    2500
    2
    4000.8
    存儲(chǔ)過(guò)程如下:
    create or replace procedure p_update—gzb (p—id in number, p—gz in number) as
    begin
    update gzb set gz=p—gz where id=p—id;
    commit;
    end;
    在前端(VFP端),假設(shè)已建立好與Oracle的鏈接′vfplink′(具體步驟可以參閱VFP的幫助文檔):
    打開(kāi)鏈接:
    nhand=sqlconnect(′vfplink′)
    &&nhand為返回的鏈接句柄
    調(diào)用Oracle的存儲(chǔ)過(guò)程p—update—gzb:
    此存儲(chǔ)過(guò)程有兩個(gè)參數(shù),分別是id與gz, 我們?cè)O(shè)要更新id為2的員工的gz為5000,則可以執(zhí)行:
    sqlexec(nhand , ″{call p—update—gzb(2,5000)}″)
    如果執(zhí)行成功,則返回1,失敗則返回-1。我們可以執(zhí)行以下命令驗(yàn)證存儲(chǔ)過(guò)程是否成功執(zhí)行了:
    sqlexec(nhand,′select * from gzb′)
    brow
    結(jié)果是:
    ID
    GZ
    1
    3050
    3
    2500
    2
    5000
    可見(jiàn),Oracle的存儲(chǔ)過(guò)程p—update—gzb已經(jīng)成功執(zhí)行了,最后,別忘了斷開(kāi)連接:
    disconnect(nhand)
    以上例子在VFP6.0、Oracle 7.3.3 環(huán)境下運(yùn)行通過(guò)。