首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Oracle 動態 SQL 建表報 ORA-00901 錯誤的根因與修正

     編輯:程式設計綜合問答

錯誤場景重現

在 PL/SQL 區塊中使用 EXECUTE IMMEDIATE 執行動態建表語句時,若字串拼接缺少必要空格,會觸發 ORA-00901: invalid CREATE command。典型錯誤代碼:

str_sql := 'create table'||''|| table_name ||'('|| field1 ||''|| datatype1 ||')';

問題分析

拼接後的 SQL 字串實際為:create tablesem_108(idnumber(2)),關鍵字與標識符之間缺少分隔空格,導致解析器無法識別語法結構。

正確寫法

str_sql := 'create table ' || table_name || ' ( ' || field1 || ' ' || datatype1 || ' )';

關鍵修正點:

  1. table 後加空格
  2. 表名後加空格再接左括號
  3. 欄位名與資料類型間加空格
  4. 右括號前加空格

最佳實踐建議

  • 使用 DBMS_OUTPUT.PUT_LINE(str_sql) 印出生成的 SQL 進行驗證
  • 採用參數化綁定變數而非字串拼接(防注入)
  • 動態 DDL 操作前檢查物件是否存在
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved