sql - 从 Oracle 循环输出变量结果
问题描述
我想STATEMENT_NUMBER
为每条记录输出ID
10 到 40 之间的记录
我尝试写以下内容:-
DECLARE
tempid NUMBER := 10;
tempresult VARCHAR2(20);
BEGIN
LOOP
SELECT
statement_number
INTO
tempresult
FROM
tblstatementsnew
WHERE
id = tempid;
dbms_output.put_line(tempresult);
tempid := tempid + 1;
EXIT WHEN tempid = 40;
END LOOP;
END;
..但我得到了错误:-
*原因:没有从对象中找到数据。*操作:对象中没有数据,这可能是由于提取结束。
我很欣赏有更简单的方法来获得这些结果,但我正在尝试更多地了解循环是如何工作的。
解决方案
我希望您的代码比打印语句更复杂。但是,请考虑使用隐式游标:
BEGIN
FOR v_tempresult IN (SELECT statement_number
FROM tblstatementsnew
WHERE id BETWEEN 10 AND 40)
LOOP
dbms_output.put_line(v_tempresult.statement_number);
END LOOP;
END;
推荐阅读
- python - pyttsx3、opencv 等 Python 模块在 Windows 11 中是否存在冲突?
- c# - 在一个 if 语句中设置布尔值,以便另一个 if 语句可以检查它是否为真
- python-3.x - 如何让 pynput 忽略来自代码的输入?
- javascript - Safari 以外的 iOS 浏览器每次加载页面时都会询问相机权限
- reactjs - 反应条件 HTML 参数
- php - 我想将 Xero 与我的 WordPress 集成,并想用发票 ID 检索发票数据
- reactjs - 子组件没有从父组件获取数据
- postgresql - Postgres TimescaleDB 设置中的一个奇怪错误
- spring-boot - HttpHostConnectException 连接到本地主机失败
- c# - JsonConverter中'typeToConvert'的目的是什么
。读?