2017-08-03 40 views
0

我一直在嘗試運行Select語句。所以我不確定我做錯了什麼。 例如,如果起始字母是「A」而結尾字母是「D」,則結果應顯示名稱以A,B,C和D開頭的所有客戶。如果輸入「A」和「Z」結果應顯示所有客戶。然後運行一個FOR循環,該循環應該遍歷所有選定的CNAME,然後調用我的過程,除了CNAME的%TYPE之外,它將依次顯示在適當的格式中。要注意:我的過程正常工作,因爲我已經測試過它。在測試腳本中使用SQL和REGEX_LIKE打印Select語句

SET SERVEROUTPUT ON; 
UNDEFINE v_begining_letter; 
UNDEFINE v_ending_letter; 
DECLARE 
&v_begining_letter CHAR(1); 
&v_ending_letter CHAR(1); 

CURSOR cur_car IS 
SELECT DISTINCT(CNAME) 
FROM CAR 
WHERE REGEXP_LIKE (CNAME, '^[&v_begining_letter-&v_ending_letter]*$'); 

counter integer :=0; 
BEGIN 

DBMS_OUTPUT.PUT_LINE('Name' || 'Total'); 
FOR counter IN cur_car LOOP 
counter := counter+1; 
cust_dep(cur_car.CNAME); 
END LOOP; 
END; 
/
+0

試試這個'SELECT DISTINCT(CNAME) FROM CAR v_begining_letter和v_ending_letter之間的SUBSTR(CNAME,1,1);'告訴我它是否解決了這個問題。不確定您的問題是否僅在該選擇語句中。如果是這樣,其餘的信息是無關緊要的。 – g00dy

+0

@ g00dy Nope沒有幫助。它只是給我一個錯誤,我的計數器是無效的,而且我的光標超出了範圍。 –

+0

@ g00dy您的選擇語句也不起作用。我輸入的字符串顯示爲無效標識符。但是我的SELECT語句可以工作。 –

回答

0

我想出了問題。該代碼是精美的。 你必須注意,當我輸入VALUES REGEX EXP不會轉換爲大寫(除非表達)。 我的數據庫有所有uppercased字母(名稱)。