首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

VFP 呼叫 Oracle 存儲過程實戰範例

     編輯:Oracle 資料庫基礎

架構優勢

VFP 前端開發效率高,Oracle 後端安全穩定,兩者結合構建高效 C/S 系統。VFP 透過 SQLCONNECT/SQLEXEC 呼叫 Oracle 預存程序。

Oracle 端準備

-- 測試表
CREATE TABLE gzb (id NUMBER PRIMARY KEY, gz NUMBER);
INSERT INTO gzb VALUES (1, 3050);
INSERT INTO gzb VALUES (2, 4000.8);
INSERT INTO gzb VALUES (3, 2500);

-- 存儲過程:更新薪資
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 端程式碼

* 1. 建立連線 (假設 ODBC DSN 名為 'vfplink')
nHandle = SQLCONNECT("vfplink")
IF nHandle < 0
    MESSAGEBOX("連線失敗")
    RETURN
ENDIF

* 2. 呼叫存儲過程:將 ID=2 的薪資改為 5000
*    語法:{call 程序名(參數1, 參數2...)}
nResult = SQLEXEC(nHandle, "{call p_update_gzb(2, 5000)}")
IF nResult < 0
    MESSAGEBOX("存儲過程執行失敗")
ELSE
    MESSAGEBOX("執行成功")
ENDIF

* 3. 驗證結果
SQLEXEC(nHandle, "SELECT * FROM gzb", "curResult")
BROWSE NORMAL TITLE "更新後資料"  && 顯示 ID=2 已變 5000

* 4. 斷開連線
SQLDISCONNECT(nHandle)

關鍵點說明

函數用途回傳值
SQLCONNECT建立 ODBC 連線連線控制代碼 (>0 成功)
SQLEXEC執行 SQL / 呼叫預存程序1 成功, -1 失敗
SQLDISCONNECT釋放連線1 成功
  • 預存程序呼叫語法:**大括號 + call + 程序名 + 參數列表**,參數須依定義順序傳遞。
  • VFP 6.0 + Oracle 7.3.3 實測通過,新版本語法相容。
  • 錯誤處理:AERROR() 可捕捉 SQLEXEC 失敗的詳細錯誤碼與訊息。

擴展:帶 REF CURSOR 返回結果集

Oracle 端定義 TYPE T_CURSOR IS REF CURSOR; PROCEDURE p_query(..., p_rc OUT T_CURSOR),VFP 端 SQLEXEC(nHandle, "{call p_query(?, ?)}", "vfp_cursor") 直接將結果集映射為 VFP 游標,可直接 BROWSE 或報表使用。

總結

VFP + Oracle 存儲過程 = 業務邏輯下沉資料庫層,前端僅負責呈現,安全性與效能雙贏。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved