在我的plsql过程中,我基于同一表的其他一些行的值插入行。对于insert语句中的一列,我需要根据case语句操作现有的行值,然后进行插入。我要做的是:
我为要使用的现有行创建一个光标,然后使用其列值。
INSERT into table columns
(column names..)
values (
curser.column names
,case
when input is null then null
else input||'.'||
end
case
when curser.column like 'drop:%' then replace(curser.column,'drop:%')
else curser.column
end
, other column values).
这里的输入是我过程的一个参数。
两个case语句都针对相同的列值。 (两个statemtents一起完成该列的值) 但是我在第二个“ case”语句中遇到了错误。 这不正确吗?
答案 0 :(得分:2)
input||'.'|| end case
该节在语法上不正确。 end
之后没有第二个字符串连接的第二个操作数,也没有逗号(或其他运算符)。
您大概想用
替换它input||'.' end || case
以连接两个CASE
的结果。
如果还有其他问题,例如目标列的数量与值的数量不匹配,则很难确定,因为遗漏了太多。
答案 1 :(得分:1)
这听起来不像是对光标的操作。我期望insert . . . select
:
insert into t columns (column names..)
select . . .,
(case when t.input is not null then input || '.' end),
replace(t.column, 'drop:', ''),
. . .
from t
where . . . ;