ORACLE中如何得知执行一条SQL语句后这条语句所影响的行数?

时间:2022-03-03 22:54:52
我在trigger里,先update一条记录。如果这条语句影响的行数为0,表明没有UPDATE成功,就说明该表中没有这条记录,然后我就可以INSERT这条记录。现在我想知道用什么函数可以得到上一条SQL语句执行后所影响的行数(也就是记录数)。
我在SQL SERVER 7中用的是@@rowcount.
因为我才注册CSDN,所以系统不让我给多的分,希望各位不要嫌少!
各位帮帮我啊!多谢!

5 个解决方案

#1


用SQL%ROWCOUNT。

#2


多谢了,我查文档得到的和你说的相同,测试已经通过,多谢了!
我还想请教一下,类似这种函数:如SQL%ROWCOUNT,SQLCODE等还有些什么,给有什么功能?

#3


请问ORACLE有什么好的调试trigger的工具和方法?

#4


看书啊,工具吗,oracle没有提供,用第三方的,白金龙的,你用过吗?
我用toad也很好

#5


ORACLE处理每一个语句实际是把它当成一个游标处理,
这样的游标叫隐式游标。
SQL.ROWCOUNT中SQL指代游标名,ROWCOUNT是游标的一个属性,表示作用的行数。
类似的用法ORACLE文档中有详细介绍。如下:
%FOUND
This is a cursor attribute, which can be appended to the name of a cursor or cursor variable. Before the first fetch from an open cursor, cursor_name%FOUND yields NULL. Thereafter, it yields TRUE if the last fetch returned a row, or FALSE if the last fetch failed to return a row. 

Until a SQL statement is executed, SQL%FOUND yields NULL. Thereafter, it yields TRUE if the statement affected any rows, or FALSE if it affected no rows. 

%ISOPEN
This is a cursor attribute, which can be appended to the name of a cursor or cursor variable. If a cursor is open, cursor_name%ISOPEN yields TRUE; otherwise, it yields FALSE. 

Oracle automatically closes the implicit SQL cursor after executing its associated SQL statement, so SQL%ISOPEN always yields FALSE. 

%NOTFOUND
This is a cursor attribute, which can be appended to the name of a cursor or cursor variable. Before the first fetch from an open cursor, cursor_name%NOTFOUND yields NULL. Thereafter, it yields FALSE if the last fetch returned a row, or TRUE if the last fetch failed to return a row. 

Until a SQL statement is executed, SQL%NOTFOUND yields NULL. Thereafter, it yields FALSE if the statement affected any rows, or TRUE if it affected no rows. 

%ROWCOUNT
This is a cursor attribute, which can be appended to the name of a cursor or cursor variable. When a cursor is opened, %ROWCOUNT is zeroed. Before the first fetch, cursor_name%ROWCOUNT yields 0. Thereafter, it yields the number of rows fetched so far. The number is incremented if the latest fetch returned a row. 

Until a SQL statement is executed, SQL%ROWCOUNT yields NULL. Thereafter, it yields the number of rows affected by the statement. SQL%ROWCOUNT yields 0 if the statement affected no rows. 

#1


用SQL%ROWCOUNT。

#2


多谢了,我查文档得到的和你说的相同,测试已经通过,多谢了!
我还想请教一下,类似这种函数:如SQL%ROWCOUNT,SQLCODE等还有些什么,给有什么功能?

#3


请问ORACLE有什么好的调试trigger的工具和方法?

#4


看书啊,工具吗,oracle没有提供,用第三方的,白金龙的,你用过吗?
我用toad也很好

#5


ORACLE处理每一个语句实际是把它当成一个游标处理,
这样的游标叫隐式游标。
SQL.ROWCOUNT中SQL指代游标名,ROWCOUNT是游标的一个属性,表示作用的行数。
类似的用法ORACLE文档中有详细介绍。如下:
%FOUND
This is a cursor attribute, which can be appended to the name of a cursor or cursor variable. Before the first fetch from an open cursor, cursor_name%FOUND yields NULL. Thereafter, it yields TRUE if the last fetch returned a row, or FALSE if the last fetch failed to return a row. 

Until a SQL statement is executed, SQL%FOUND yields NULL. Thereafter, it yields TRUE if the statement affected any rows, or FALSE if it affected no rows. 

%ISOPEN
This is a cursor attribute, which can be appended to the name of a cursor or cursor variable. If a cursor is open, cursor_name%ISOPEN yields TRUE; otherwise, it yields FALSE. 

Oracle automatically closes the implicit SQL cursor after executing its associated SQL statement, so SQL%ISOPEN always yields FALSE. 

%NOTFOUND
This is a cursor attribute, which can be appended to the name of a cursor or cursor variable. Before the first fetch from an open cursor, cursor_name%NOTFOUND yields NULL. Thereafter, it yields FALSE if the last fetch returned a row, or TRUE if the last fetch failed to return a row. 

Until a SQL statement is executed, SQL%NOTFOUND yields NULL. Thereafter, it yields FALSE if the statement affected any rows, or TRUE if it affected no rows. 

%ROWCOUNT
This is a cursor attribute, which can be appended to the name of a cursor or cursor variable. When a cursor is opened, %ROWCOUNT is zeroed. Before the first fetch, cursor_name%ROWCOUNT yields 0. Thereafter, it yields the number of rows fetched so far. The number is incremented if the latest fetch returned a row. 

Until a SQL statement is executed, SQL%ROWCOUNT yields NULL. Thereafter, it yields the number of rows affected by the statement. SQL%ROWCOUNT yields 0 if the statement affected no rows.