sql%notfound、sql%rowcount和return
今天一部門開發人員透過公司BQQ問我是否可以在指令碼中獲取到update語句執行後的更新行數,並想知道返回值。
我做了一個小試驗,如下的內容很適合他藉以利用。這個案例的關鍵字有sql%notfound、sql%rowcount和return,適合在指令碼或應用中加以使用。
SQL> create table test_return
2 (
3 name varchar2(24)
4 );
Table created
SQL> insert into test_return values('111');
1 row inserted
SQL> insert into test_return values('222');
1 row inserted
SQL> commit;
Commit complete
SQL>
SQL> set serveroutput on
--用SQL %NOTFOUND來獲取是否更新了行數,true/false
SQL> begin
2 update test_return set name=name where name='123';
3 if SQL %NOTFOUND then
4 dbms_output.put_line('沒有資料行更新。');
5 end if;
6 end;
7 /
沒有資料行更新。
PL/SQL procedure successfully completed
SQL>
SQL> set serveroutput on
SQL> begin
2 update test_return set name=name where name='111';
3 if SQL %NOTFOUND then
4 dbms_output.put_line('沒有資料行更新。');
5 end if;
6 end;
7 /
PL/SQL procedure successfully completed
SQL> commit;
Commit complete
SQL>
--用sql%rowcount來獲取更新的行數
SQL> begin
2 update test_return set name=name;
3 dbms_output.put_line('已經更新的行數為:'||to_char(sql%rowcount));
4 end;
5 /
已經更新的行數為:2
PL/SQL procedure successfully completed
SQL> commit;
Commit complete
--如下兩個例子獲取更新後或插入後的列值
SQL>
SQL> declare
2 v_name varchar2(24);
3 begin
4 update test_return set name=name where rownum<2 returning name into v_name;
5 dbms_output.put_line('已經更新的name為:'||v_name);
6 end;
7 /
已經更新的name為:111
PL/SQL procedure successfully completed
SQL>
SQL> declare
2 v_name varchar2(24);
3 begin
4 insert into test_return(name) values('333') returning name into v_name;
5 dbms_output.put_line('已經更新的name為:'||v_name);
6 end;
7 /
已經更新的name為:333
PL/SQL procedure successfully completed
SQL> commit;
Commit complete
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/38542/viewspace-984943/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNTSQL
- Oracle中的sql%rowcountOracleSQL
- SQL Server中@@ROWCOUNT的用法SQLServer
- SQL%ROWCOUNT的簡要說明SQL
- oracle中的sql%rowcount(R2)OracleSQL
- 隱式遊標(implicit cursor)_sql%found_rowcount小操作SQL
- Oracle中的sql%rowcount在瀚高資料庫中的相容方案OracleSQL資料庫
- SQL Server中利用SET ROWCOUNT來高效能地進行分頁SQLServer
- 【meil】MS SQL用ROWCOUNT解決TOP子句不支援變數的問題SQL變數
- NO_DATA_FOUND和%NOTFOUND的區別
- SQL Server 管理常用的SQL和T-SQLSQLServer
- sql tuning task和sql profileSQL
- DB2 backup fails with SQL2079N return code 30DB2AISQL
- sql devloper 用法的和SQL 編寫SQLdev
- Shared SQL Areas和Private SQL AreasSQL
- PL/SQL Profiler 和SQL Developer 報表SQLDeveloper
- SQL Union和SQL Union All用法(轉)SQL
- await、return 和 return await 的陷阱AI
- SQL Server資料庫管理常用SQL和T-SQL語句SQLServer資料庫
- HighgoDB查詢慢SQL和阻塞SQLGoSQL
- MyBatis框架之SQL對映和動態SQLMyBatis框架SQL
- oracle glogin.sql 和login.sqlOracleSQL
- 【SQL】Oracle SQL join on語句and和where使用區別SQLOracle
- 透過shell和sql結合查詢效能sqlSQL
- Oracle glogin.sql 和login.sql使用OracleSQL
- 通過shell和sql結合查詢效能sqlSQL
- SQL Server Express和SQL Server Compact的應用SQLServerExpress
- XSS 和 SQL 注入SQL
- oracle concept-pga和共享sql 私有sql記載OracleSQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊SQL
- SQL* Net message to client 和SQL * Net more data to client等待事件SQLclient事件
- 使用SQL TRACE和TKPROF觀察SQL語句執行結果SQL
- 繫結變數在靜態sql和動態sql中變數SQL
- MYSQL和SQL的區別MySql
- MySQL索引和SQL調優MySql索引
- sql pivot、unpivot和partition by用法SQL
- 1、MySQL和SQL入門MySql
- sql中union和union allSQL