我有點堅持這個不知道如何撰寫代碼。
我在其中呼叫STUDENT 了包含此資料的表:
STUDID | NAME | SURNAME | STUDENT_FILE | CLASS
------- ------ --------- -------------------- -------
154 | Vil | Docs | \\demo\\F\\A.csv | A
132 | Nil | Fics | \\do\\F\\X.csv | A
123 | Sag | Ter | \\de\\F\\Y.csv | A
178 | Mia | Jac | \\mo\\F\\Z.csv | A
167 | Dic | Pol | D.csv | A
134 | Mic | Kil | (null) | A
我的預期結果是以下格式,我需要洗掉所有路徑名并僅在列中保留檔案名STUDENT_FILE
STUDID | NAME | SURNAME | STUDENT_FILE | CLASS
------- ------ --------- -------------------- -------
154 | Vil | Docs | A.csv | A
132 | Nil | Fics | X.csv | A
123 | Sag | Ter | Y.csv | A
178 | Mia | Jac | Z.csv | A
167 | Dic | Pol | D.csv | A
134 | Mic | Kil | (null) | A
我的代碼:
DECLARE
CNT NUMBER
BEGIN
SELECT COUNT(STUD_ID) INTO CNT FROM STUDENT;
FOR i...CNT LOOP
UPDATE STUDENT SET STUDENT_FILE=(SELECT SUBSTR(STUDENT_FILE,(INSTR(STUDENT_FILE,'\',-1,1) 1),LENGTH(STUDENT_FILE)) AS FL FROM STUDENT) where CLASS='A' and ROWNUM :=i;
END LOOP;
END;
/
我收到一個錯誤
單行子查詢回傳多于一行
非常感謝任何解決方案,或者如何將其創建為通用存盤程序?
uj5u.com熱心網友回復:
你不需要 PL/SQL,只需要一個普通的 UPDATE:
UPDATE student
SET student_file =
SUBSTR (student_file,
( INSTR (student_file,
'\',
-1,
1)
1),
LENGTH (student_file))
WHERE class = 'A'
順便說一句,rownum = i這只是訪問任何行的錯誤方法,它永遠不會是真的(除非 i = 1)。
此外,一個更簡單的選擇是使用
UPDATE student
SET student_file =
SUBSTR (student_file, INSTR (student_file, '\', -1) 1)
WHERE class = 'A';
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/476278.html
