这是一些更简化的伪代码,描述了我正在尝试做的事情:
DECLARE
CURSOR CURSOR_A IS
SELECT FIELD_A1, FIELD_A2
FROM TABLE_A;
vNAME NVARCHAR2(100) := NULL;
BEGIN
FOR RECORD_A IN CURSOR_A LOOP
IF (RECORD_A.FIELD_A1 IS NOT NULL) THEN
vNAME := RECORD_A.FIELD_A1;
ELSE
vNAME := (SELECT FIELD_B
FROM TABLE_B
WHERE TABLE_B.B2 = RECORD_A.A2)
END LOOP;
END;
/
Run Code Online (Sandbox Code Playgroud)
不允许在 PL/SQL 块中包含 SELECT 语句吗?
所有你需要的 - 一个选择。尝试一下:
declare
name nvarchar2(100) := null;
begin
for row_ in (
select field_a1, field_b from table_a left outer join table_b on b2 = a2
) loop
name := coalesce(row_.field_a1, row_.field_b);
-- do something
end loop;
end;
/
Run Code Online (Sandbox Code Playgroud)
... and field_a1 is null如果您在两个表中都有太多行并且担心性能,您仍然可以添加到 on-clause。
| 归档时间: |
|
| 查看次数: |
3792 次 |
| 最近记录: |