Oracle中的sql%rowcount在瀚高資料庫中的相容方案

瀚高PG實驗室發表於2022-03-04
環境
系統平臺: Linux x86-64 Red Hat Enterprise Linux 7
版本: 4.5
症狀

Oracle的函式遷移到瀚高資料庫,應用程式呼叫瀚高資料庫的函式時,提示“com.highgo.jdbc.util.PSQLException:錯誤: 欄位 "sql" 不存在”的錯誤。

問題原因

經調查,在Oracle中使用了sql%rowcount,獲取更新或者刪除語句的修改行數。

該語法在瀚高資料庫中不相容,需要單獨修改。

解決方案

在瀚高資料庫中使用get diagnostics rowcnt := row_count;語句替代sql%rowcount,同樣也是獲取更新或者刪除語句的修改行數。

示例如下:

Oracle:

create table t1(id numeric,sname varchar(10),primary key(id));

create or replace function testfnc return number

as

  n number;

begin

  insert into t1 values(1,'zhao');

  n:=sql%rowcount;

  commit;

  dbms_output.put_line(n);

  return 0;

end;

測試結果:

執行函式後,輸出行數是1

image.png

image.png

檢索t1表的資料,插入了1條記錄

image.png

瀚高:

create table t1(id numeric,sname varchar(10),primary key(id));

create or replace function testfnc() returns numeric

language plpgsql

as

$body$

declare

  n numeric;

begin

  insert into t1 values(1,'zhao');

  --n:=sql%rowcount;

  get diagnostics n := row_count;

  raise notice '%',n;

  return 0;

end;

$body$

測試結果:

執行函式後,輸出行數是1

image.png

檢索t1表的資料,插入了1條記錄

image.png




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994931/viewspace-2864585/,如需轉載,請註明出處,否則將追究法律責任。

相關文章