create or replace package body ETL is
procedure run_all
is
begin
declare
cursor abc is select distinct d.sex from d ;
bb d.sex%type;
begin
open abc; fetch abc into bb;
for bb in abc
if bb = '男' then insert into nan select * from d where d.sex='男';
end if;
fetch abc into bb;
end loop;
commit;
close abc;
end;
end run_all;
end ETL;
if bb = '男' then 报错了
pls-00103 出现符号if在需要下列之一时 -
麻烦看看谢谢
谁能举个 for 循环 套 for 循环的 加游标的 小例子谢谢
procedure run_all
is
begin
declare
cursor abc is select distinct d.sex from d ;
bb d.sex%type;
begin
open abc; fetch abc into bb;
for bb in abc
if bb = '男' then insert into nan select * from d where d.sex='男';
end if;
fetch abc into bb;
end loop;
commit;
close abc;
end;
end run_all;
end ETL;
if bb = '男' then 报错了
pls-00103 出现符号if在需要下列之一时 -
麻烦看看谢谢
谁能举个 for 循环 套 for 循环的 加游标的 小例子谢谢
CREATE OR REPLACE PACKAGE BODY etl
IS
PROCEDURE run_all
IS
CURSOR abc
IS
SELECT DISTINCT d.sex
FROM d; bb d.sex%TYPE;
BEGIN
FOR bb IN abc
LOOP
IF bb.sex = '男'
THEN
INSERT INTO nan
SELECT *
FROM d
WHERE d.sex = '男';
END IF;
END LOOP; COMMIT;
END run_all;
END etl;
ORA-06512: 在 "TT.ETL", line 6
ORA-06512: 在 "TT.ETL", line 14
ORA-06512: 在 line 2
执行楼上 报错了 帮我看看谢谢
bb.sex 为什么可以这么用呢谢谢
CREATE OR REPLACE PACKAGE BODY etl
IS
PROCEDURE run_all
IS
CURSOR abc
IS
SELECT DISTINCT d.sex
FROM d; --bb d.sex%TYPE;
BEGIN
FOR bb IN abc
LOOP
IF bb.sex = '男'
THEN
INSERT INTO nan
SELECT *
FROM d
WHERE d.sex = '男';
END IF;
END LOOP; COMMIT;
END run_all;
END etl;
bb。sex 是什么意思呢 是用的隐式游标吗 谢谢 现在已经能插入语句了
要是
CREATE OR REPLACE PACKAGE BODY etl
IS
PROCEDURE run_all
IS
CURSOR abc
IS
SELECT DISTINCT d.sex,d.zhi FROM d;
BEGIN
FOR bb IN abc
LOOP
IF bb.sex = '男'and bb.zhi =4
THEN
INSERT INTO nan
SELECT *
FROM d
WHERE d.sex = '男';
END IF;
END LOOP; COMMIT;
END run_all;
END etl;bb.sex 和 bb.zhi 是按照SELECT DISTINCT d.sex,d.zhi FROM d;顺序吗 我这样执行了 没有按照值=4 来插入谢谢
INSERT INTO nan
SELECT *
FROM d
WHERE d.sex = '男';
我看的是Oracle11g SQL PL/SQL从入门到精通