Oracle PL/SQL游标更新
我在用甲骨文。我的SQL技能很差,我想更新通过使用游标获得的查询信息,我读过关于使用Oracle PL/SQL游标更新,sql,oracle,plsql,cursor,Sql,Oracle,Plsql,Cursor,我在用甲骨文。我的SQL技能很差,我想更新通过使用游标获得的查询信息,我读过关于使用WHERE CURRENT of语句的内容,但我不知道如何将其应用到我当前的代码中。有人介意伸出援助之手吗?我希望允许调用程序在当前代码中更新查询返回的游标中的一行(我希望更新比赛位置)。以下是我目前的代码: DECLARE l_race_rec race%rowtype; CURSOR Query1 IS SELECT * FROM RACE WHERE Race_Time='22-S
WHERE CURRENT of
语句的内容,但我不知道如何将其应用到我当前的代码中。有人介意伸出援助之手吗?我希望允许调用程序在当前代码中更新查询返回的游标中的一行(我希望更新比赛位置)。以下是我目前的代码:
DECLARE
l_race_rec race%rowtype;
CURSOR Query1
IS
SELECT *
FROM RACE
WHERE Race_Time='22-SEP-14 12.00.00.000000000';
BEGIN
OPEN Query1;
LOOP
FETCH query1 INTO l_race_rec;
EXIT WHEN query1%notfound;
dbms_output.put_line( l_race_rec.raceid || ', ' || l_race_rec.race_location || ', ' ||
l_race_rec.race_type || ', ' || l_race_rec.race_time || ', ' || l_race_rec.sex || ', ' ||
l_race_rec.minage || ', ' || l_race_rec.maxage );
END LOOP;
CLOSE Query1;
END;
下面是一个让你行动起来的例子:
DECLARE
l_race_rec race%rowtype;
CURSOR Query1 IS
SELECT *
FROM RACE
WHERE Race_Time = '22-SEP-14 12.00.00.000000000';
nSome_value NUMBER := 42;
BEGIN
OPEN Query1;
LOOP
FETCH query1 INTO l_race_rec;
EXIT WHEN query1%notfound;
dbms_output.put_line(l_race_rec.raceid || ', ' ||
l_race_rec.race_location || ', ' ||
l_race_rec.race_type || ', ' ||
l_race_rec.race_time || ', ' ||
l_race_rec.sex || ', ' ||
l_race_rec.minage || ', ' ||
l_race_rec.maxage );
UPDATE RACE
SET SOME_FIELD = nSome_value
WHERE CURRENT OF QUERY1;
END LOOP;
CLOSE Query1;
END;
分享和享受。这里有一个让你行动起来的例子:
DECLARE
l_race_rec race%rowtype;
CURSOR Query1 IS
SELECT *
FROM RACE
WHERE Race_Time = '22-SEP-14 12.00.00.000000000';
nSome_value NUMBER := 42;
BEGIN
OPEN Query1;
LOOP
FETCH query1 INTO l_race_rec;
EXIT WHEN query1%notfound;
dbms_output.put_line(l_race_rec.raceid || ', ' ||
l_race_rec.race_location || ', ' ||
l_race_rec.race_type || ', ' ||
l_race_rec.race_time || ', ' ||
l_race_rec.sex || ', ' ||
l_race_rec.minage || ', ' ||
l_race_rec.maxage );
UPDATE RACE
SET SOME_FIELD = nSome_value
WHERE CURRENT OF QUERY1;
END LOOP;
CLOSE Query1;
END;
分享和享受。为什么不使用光标进行循环呢
...
for row in query1
loop
dbms_output.put_line(row.raceid || ', ' ||
row.race_location || ', ' ||
row.race_type || ', ' ||
row.race_time || ', ' ||
row.sex || ', ' ||
row.minage || ', ' ||
row.maxage );
UPDATE RACE
SET SOME_FIELD = nSome_value
WHERE CURRENT OF QUERY1;
end loop;
...
这样就不需要打开和关闭光标
请记住,循环游标对于结果为1行以上的游标效果更好
祝你好运。为什么不使用光标进行循环呢
...
for row in query1
loop
dbms_output.put_line(row.raceid || ', ' ||
row.race_location || ', ' ||
row.race_type || ', ' ||
row.race_time || ', ' ||
row.sex || ', ' ||
row.minage || ', ' ||
row.maxage );
UPDATE RACE
SET SOME_FIELD = nSome_value
WHERE CURRENT OF QUERY1;
end loop;
...
这样就不需要打开和关闭光标
请记住,循环游标对于结果为1行以上的游标效果更好
祝你好运。如果有人想知道的话,你仍然坚持这个观点:(Oracle 3?真的吗?那是1983年发布的!3.2.20.09是SQL Developer的版本,这是一个客户端工具如果有人想知道的话,你仍然坚持这个观点:(Oracle 3?真的吗?那是1983年发布的!3.2.20.09是SQL Developer的版本,这是一个客户端工具。)