在 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 || ' )';
關鍵修正點:
table 後加空格DBMS_OUTPUT.PUT_LINE(str_sql) 印出生成的 SQL 進行驗證