一、問題情景:
原sql:
select c.category_id,
c.category_name,
sys_connect_by_path(c.category_name, '/') path
from tbl_category_path c
start with c.category_id = 0
connect by c.parent_node_id =prior c.node_id
在執行上述sql語句時,oracle報錯誤 ora-30004,具體如下圖:
二、分析:
錯誤提示的含義是:當使用
sys_connect_by_path
函式時,
不能將分隔符作為字段值的一部分。
根據此含義,猜測是否某條記錄的該字段內容包含有我們的分割符「/」。據此思路,檢查了所有記錄的「category_name」字段內容,確實發現了有一條記錄該欄位內容就包含了「/」。
三、最簡單的辦法是改用其他的分割符號就可以。
select c.category_id,
c.category_name,
sys_connect_by_path(c.category_name, '||') path
from tbl_category_path c
start with c.category_id = 0
connect by c.parent_node_id = c.node_id
ORA 00119,ORA 00132 錯誤處理
故障現象 由於我修改過資料庫的dbname,之後重啟資料庫時出現了 ora 00119,ora 00132 如下 sql startup nomount pfile oracle home dbs initetdb.ora ora 00119 invalid specification for sy...
ora 00119錯誤處理
今天做實驗為了好識別機器隨手用hostname source命令更改了linux主機名然後啟動資料庫報如下錯誤 oracle source dbs sqlplus as sysdba sql plus release 11.2.0.2.0 production on sat aug 24 20 11...
ORA 00972 錯誤處理
oracle 11g sql 寫好的指令碼執行後報錯 ora 00972 識別符號過長 可能的原因一 select 語句中的字段別名太長,中文字元別名最長為10個漢字,簡化別名名稱,問題得到解決。可能的原因二 字符集導致,這種情況下,可能會發現sql語句沒有任何語法 邏輯問題,但是用pl sql執行...