在 Oracle 中更新列值的过程
Posted
技术标签:
【中文标题】在 Oracle 中更新列值的过程【英文标题】:Procedure to update column values in Oracle 【发布时间】:2014-12-06 15:55:32 【问题描述】:使用 Oracle 中的过程,我想从输入参数更新表中所有记录的代码字段。例如,如果参数值为100:
代码 256 的第 1 行更改为 101 代码 368 的第 2 行更改为 102 第 3 行代码 624 更改为 103
我试试这个
create or replace PROCEDURE procedure_name (parameter_newcode code%TYPE) AS
CURSOR cursor_name IS select code from table
order by code asc;
var_newCode code%TYPE;
BEGIN
OPEN cursor_name;
LOOP
FETCH cursor_name INTO var_newCode;
EXIT WHEN cursor_name%NOTFOUND;
var_newCode:=parameter_newcode+1;
update table set code = var_newCode;
END LOOP;
CLOSE cursor_name;
END procedure_name;
但对每一行返回相同的代码(例如,如果参数是100 - > 101)
【问题讨论】:
【参考方案1】:在您设置的每个循环中(一次又一次)var_newCode:=parameter_newcode+1;
而且您没有指定要更新哪条记录update table set code = var_newCode;
有些东西
create or replace PROCEDURE procedure_name (parameter_newcode code%TYPE) AS
CURSOR cursor_name IS select code from myTable
order by code asc;
var_oldCode code%TYPE;
var_newCode code%TYPE;
BEGIN
var_newCode:=parameter_newcode;
OPEN cursor_name;
LOOP
FETCH cursor_name INTO var_oldCode;
EXIT WHEN cursor_name%NOTFOUND;
var_newCode:=var_newCode+1;
update myTable set code = var_newCode where code = var_oldCode;
END LOOP;
CLOSE cursor_name;
END procedure_name;
应该可以。 (抱歉目前无法测试。)
【讨论】:
以上是关于在 Oracle 中更新列值的过程的主要内容,如果未能解决你的问题,请参考以下文章