如何在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 中实现“自动编号”字段?

如何在 shell 中实现并行执行

delphi 请问如何在SQL语句中实现对 Binary 类型的位运算?

java中数据库中实现分页的sql语句要求每页十条要查询的是第二页

你将如何在 django 中实现聊天?

如何在java中实现 sql语15分钟执行一次 希望说详细一下