我有一個過程用另一個表中的數據更新我的客戶端。而有些客戶不會因其某個價值的失敗而更新。如何在過程更新之前測試一個值plsql
這是拋出的錯誤:ORA - 12899:對於「TABLE_EXAMPLE」「BRANCH_CODE」(當前值:3,最大值:2)列值太大。
而現在這是程序:
PROCEDURE p_update_customers AS
CURSOR customer_data IS
SELECT a.code_cust code_cust,
'0' || a.branch_code branch_code,
a.costumer_id,
a.name name,
b.description
FROM customer a, description b
WHERE a.costumer_id = b.costumer_id;
reg_customer_data customer_data%ROWTYPE;
BEGIN
BEGIN
OPEN customer_data;
LOOP
FETCH customer_data
INTO reg_customer_data;
EXIT WHEN customer_data%NOTFOUND;
BEGIN
我想在這個部分我有使用IF或CASE語句來測試分支代碼。我只需要該值的最後兩位數字。 (在BEGIN和UPDATE之間)。因此,我需要在更新之前測試branch_code,因爲我只需要最後兩位數字(09或58)。
costumer_id name branch_code
1 jose 09
2 peter 09
3 jhon 09
4 charlie 058
如果branch_code有3個數字,刪除第一個數字並傳遞2位數值,稍後繼續更新。
注意:我不能更改或刪除我在遊標中使用的concat:CUSTOMER_DATA,因爲TABLE_EXAMPLE上的BRANCH_CODE它必須是兩位數。
感謝你的幫助,但斜面觸摸CUSTOMER_DATA光標。 – spikeTJ 2015-02-05 20:06:05
@harsd - 查看我答案的附錄,它改變了'UPDATE'並且保持光標不變;希望對你有效。 – 2015-02-05 23:28:58