【发布时间】:2010-10-07 04:46:52
【问题描述】:
我有一个关于 oracle 程序的问题,因为我是 sql 语言的新手:D, 这是我的查询
CREATE OR REPLACE PROCEDURE MONDESINT.UPDATECOADESCRIPTION IS
DESCRIPT MONDES_MSTR_CHART_OF_ACCOUNT.NAMA_AKUN%type;
BEGIN
FOR SATU IN (select NO_AKUN, NAMA_AKUN
from mondes_mstr_chart_of_account
where NO_AKUN LIKE '4-1-200-2-03-000%')
LOOP
select REPLACE(NAMA_AKUN,SUBSTR(NAMA_AKUN,0,33),'Utang-Dana Deposit-USD')
INTO DESCRIPT
from mondes_mstr_chart_of_account
where NO_AKUN = '4-1-200-2-03-0009';
update mondes_mstr_chart_of_account
set NAMA_AKUN = DESCRIPT
where NO_AKUN = '4-1-200-2-03-0009';
END LOOP;
END UPDATECOADESCRIPTION;
在这种情况下,我将替换表格列中的一些字符串。列名是“NAMA_AKUN”,我将替换 NAMA_AKUN 其中 NO_AKUN LIKE '4-1-200-2-03-000%'。在上面的代码中,我尝试了一条 NO_AKUN = '4-1-200-2-03-0009' 的记录。
select REPLACE(NAMA_AKUN,SUBSTR(NAMA_AKUN,0,33),'Utang-Dana Deposit-USD')
from mondes_mstr_chart_of_account
where NO_AKUN = '4-1-200-2-03-0009';
...运行良好,它将把“DOLLAR AMERICA”替换为“USD”,即:“BLA BLa Bla-DOLLAR AMERICA-Bla Bla”将更改为“BLA BLa Bla-USD-Bla Bla”
注意:“DOLLAR”之前的字符长度对于所有记录都是相等的。
问题是……
当我执行此过程时,结果将是:“BLA BLa Bla-USD”,美元的下一个没有任何内容。预期结果是“BLA BLa Bla-USD-Bla Bla”
有什么想法吗?
【问题讨论】:
-
你是说程序在第一次更新后退出循环?
标签: sql oracle stored-procedures plsql