如何在SQL 2005中实现循环每一行做一定的操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SQL 2005中实现循环每一行做一定的操作相关的知识,希望对你有一定的参考价值。
参考技术A 可以使用游标:DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT * FROM A) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor ; --读取第一行数据
WHILE @@FETCH_STATUS = 0
BEGIN
执行操作
FETCH NEXT FROM My_Cursor; --读取下一行数据
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO本回答被提问者和网友采纳
如何在 SQL*Plus 中使用 PL/SQL 过程文件
【中文标题】如何在 SQL*Plus 中使用 PL/SQL 过程文件【英文标题】:How to use a PL/SQL procedure file with SQL*Plus 【发布时间】:2018-03-29 09:19:33 【问题描述】:我想执行一个 .sql 文件中的 PL/SQL 过程。
我正在使用 SQL*Plus 调用我的 .sql 文件,如下所示:
@myfile.sql
这里是 myfile.sql
declare
listTotal number := 0;
nbrCommit number := 200;
begin
select count(1) into listTotal from MKTMLF.TMP_ID_CLI_SUPPR;
[... different updates here ....]
commit;
if listTotal > nbrCommit THEN
[... different updates here ....]
commit;
end if;
end;
当我将 PL/SQL 粘贴到 Oracle SQL 开发人员中时,它会告诉我“过程 PL/SQL 已完成”,但当我使用 SQL*Plus 执行此操作时,它只会显示一个数字
55
没有别的了!实际上我发现这些数字是我 file.sql 中的行数。
有什么问题?为什么在 Oracle SQL 开发人员内部和使用 SQL*Plus 都可以?
【问题讨论】:
键入正斜杠“/”,您的程序将运行。您已将代码放入缓冲区,但您需要告诉它运行缓冲区中的内容 - 因此是“/”。 @BriteSponge 太感谢你了!!!那个“/”使它工作! 相关:***.com/q/1079949/330315 【参考方案1】:请在文件末尾添加正斜杠/
。这将要求客户端运行代码。
结尾的 / 是 sqlplus 和 sqlcl 寻找的东西,以知道它是块的结尾,请运行上面的代码块。
在 SQLDEV 中,有一个智能解析器可以从语法上确定块的结尾以知道要执行什么。
【讨论】:
以上是关于如何在SQL 2005中实现循环每一行做一定的操作的主要内容,如果未能解决你的问题,请参考以下文章
我应该如何在 SQL Server 2005 中实现“自动编号”字段?
delphi 请问如何在SQL语句中实现对 Binary 类型的位运算?