【发布时间】:2015-07-17 09:11:10
【问题描述】:
我想在这种特殊情况下寻求一些帮助或建议。
我有一个名为“团队”的表。该表包含 3 列 - Issue、Responsible_team 和 More_Info(均为 varchar2)。
我有一个带有光标和循环的 PL/SQL 脚本,用于选择与您键入的问题描述一样多的团队(您认为它可能会帮助您找到负责的团队的一些随机词)。这部分对我很有用。
但我不知道如何编译那里的 IF 条件。如果根据输入的单词描述没有找到团队,我想得到一些基本的输出 dbms_output.put_line('Responsible team is not found')。 我编写脚本的方式有两种。经典循环和while循环。 我很乐意提供任何建议。
1.脚本
set verify off
DECLARE
v_issue teams.issue%type; --variable for issue column from teams table
v_respteam teams.responsible_team%type; --variable for responsible_team column from teams table
v_info teams.more_info%type; --variable for more_info column from teams table
--cursor declaration
CURSOR c_respteam
RETURN teams%ROWTYPE
IS
SELECT issue, responsible_team, more_info
FROM teams
WHERE lower(issue) like '%&Describe_Issue%';
BEGIN
OPEN c_respteam;
LOOP
FETCH c_respteam into v_issue, v_respteam, v_info;
EXIT when c_respteam%NOTFOUND;
dbms_output.put_line('Responsible team is '|| v_respteam || ' --> ' || v_info);
END LOOP;
CLOSE c_respteam;
end;
/
2.脚本
-- cursor with while loop
set verify off
DECLARE
v_issue teams.issue%type; --variable for issue column from teams table
v_respteam teams.responsible_team%type; --variable for responsible_team column from teams table
v_info teams.more_info%type; --variable for more_info column from teams table
CURSOR c_respteam
RETURN teams%ROWTYPE IS
SELECT issue, responsible_team, more_info
FROM teams
WHERE lower(issue) like '%&Describe_Issue%';
BEGIN
OPEN c_respteam;
FETCH c_respteam INTO v_issue, v_respteam, v_info;
WHILE c_respteam%FOUND
LOOP
dbms_output.put_line('Responsible team is '|| v_respteam || ' --> ' || v_info);
FETCH c_respteam INTO v_issue, v_respteam, v_info;
END LOOP;
CLOSE c_respteam;
END;
/
【问题讨论】:
标签: oracle loops if-statement plsql cursor