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

PL/SQL 中 DML 語句操作實戰指南

     編輯:關於SqlServer

PL/SQL 區塊中的資料操作語言(DML)實作

在 Oracle 資料庫開發中,PL/SQL 程式區塊常被用來封裝複雜的業務邏輯。掌握在 PL/SQL 中正確執行 INSERT、UPDATE、DELETE 等 DML 操作,是開發高效預存程序與觸發器的基礎。本文將透過完整的程式碼範例,示範如何在宣告區定義變數、於執行區執行 DML,並妥善處理交易控制。

1. 新增資料(INSERT)

以下範例展示如何使用替代變數(&)接收使用者輸入,並將資料寫入 emp 表。注意:在 PL/SQL 中 & 會觸發輸入提示框,實際部署時建議改用參數傳遞。

DECLARE
  v_empno emp.empno%TYPE := &empno;
  v_ename emp.ename%TYPE := '&ename';
  v_salary emp.sal%TYPE := &sal;
BEGIN
  INSERT INTO emp (empno, ename, sal)
  VALUES (v_empno, v_ename, v_salary);
  COMMIT;
END;
/

關鍵點:使用 %TYPE 錨定型別可確保變數與資料欄位定義一致,避免型別不匹配錯誤。

2. 更新資料(UPDATE)

更新操作需特別注意 WHERE 條件,避免誤更新整張表。範例中針對特定員工編號修改薪資:

DECLARE
  v_empno emp.empno%TYPE;
  v_salary emp.sal%TYPE := &sal;
BEGIN
  UPDATE emp
  SET sal = v_salary
  WHERE empno = 1234;
  COMMIT;
END;
/

最佳實務:生產環境中應避免硬編碼條件值(如 1234),改用變數或參數動態傳入。

3. 刪除資料(DELETE)

刪除操作風險最高,務必確認 WHERE 子句精確鎖定目標列:

DECLARE
  v_empno emp.empno%TYPE := &eno;
BEGIN
  DELETE FROM emp
  WHERE empno = v_empno;
  COMMIT;
END;
/

安全建議:在刪除前先執行 SELECT 驗證將被刪除的資料筆數,或在程式中加入 SQL%ROWCOUNT 檢查影響列數。

4. 交易控制與錯誤處理

上述範例均在 DML 後直接 COMMIT,實際開發中建議採用 SAVEPOINT 搭配例外處理區塊(EXCEPTION),以便在發生錯誤時回滾至特定點,保障資料一致性。

總結

  • 善用 %TYPE 錨定型別提升程式碼維護性
  • DML 操作必須包含精確的 WHERE 條件
  • 交易控制(COMMIT/ROLLBACK)應依業務邏輯妥善安排
  • 避免在正式程式中直接使用替代變數(&),改用參數化介面

熟練掌握這些基礎操作模式,能幫助你撰寫出健壯、可維護的 PL/SQL 程式單元。

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