获取结果状态¶
语法:
get_diagnostics ::=
参数:
var_name变量名,用于接收系统变量值
item 关键字,指定要读取的系统变量(var_name应该与该系统变量的数据类型相同)。当前可用的 关键字有两个:
ROW_COUNT:最后一个发送给SQL引擎的SQL查询处理的行的数量;
RESULT_OID:最后一条SQL查询插入的最后一行的ROWID。(只有在INSERT查询后)
示例:获取结果状态¶
这条语句允许用户一次读取多个系统状态值。
-- 清理环境
DROP TABLE authors CASCADE;
DROP PROCEDURE mydiagas;
create table authors
(
title varchar(32),
name varchar(32),
city varchar(32),
age integer
);
insert into authors values('evergreen', 'rickyyang', 'hangzhou', 18);
insert into authors values('flybird', 'colinchen', 'shenzhen', 22);
insert into authors values('shyboy', 'bolinhou', 'xiamen', 19);
insert into authors values('coach', 'neoliu', 'chengdu', 20);
create or replace procedure proc as
var1 int;
var2 bigint;
begin
select * from authors;
get diagnostics var1=ROW_COUNT, var2=RESULT_OID;
dbms_output.put_line('ROW_COUNT=' || var1 || ' LASTROW_OID=%' || var2);
end;
/
exec proc;
TITLE(varchar) |NAME(varchar) |CITY(varchar) |AGE(int) |
------------------------------------------------------------------------
evergreen |rickyyang |hangzhou |18 |
------------------------------------------------------------------------
flybird |colinchen |shenzhen |22 |
------------------------------------------------------------------------
shyboy |bolinhou |xiamen |19 |
------------------------------------------------------------------------
coach |neoliu |chengdu |20 |
总数目:4
ROW_COUNT=4 LASTROW_OID=%0
select * from authors;
TITLE(varchar) |NAME(varchar) |CITY(varchar) |AGE(int) |
------------------------------------------------------------------------
evergreen |rickyyang |hangzhou |18 |
------------------------------------------------------------------------
flybird |colinchen |shenzhen |22 |
------------------------------------------------------------------------
shyboy |bolinhou |xiamen |19 |
------------------------------------------------------------------------
coach |neoliu |chengdu |20 |
总数目:4
--删除过程
DROP PROCEDURE proc;
DROP TABLE authors CASCADE;