SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
create table tmp_test ( --k number(10) primary key, n01 number(10), n02 number(10), n03 number(10), n04 number(10), n05 number(10), n06 number(10), n07 number(10), n08 number(10), n09 number(10), n10 number(10), n11 number(10), n12 number(10), n13 number(10), n14 number(10), n15 number(10), n16 number(10), n17 number(10), n18 number(10), n19 number(10), n20 number(10) ); insert into tmp_test with a as ( select rownum n from dual connect by rownum <= 1e3 ) select n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n from a; commit; declare gr number := 1; s varchar2 (32767); n number; r rowid; tot number := 0; fast number := 1; begin with a as ( select max(rowid) rid from tmp_test group by dbms_rowid.ROWID_BLOCK_NUMBER(rowid) ), b as ( select rid, rownum rn from a ) select rid into r from b where rn = gr; for x in 1 .. 1e1 loop s := 'select sum (%1) from tmp_test where rowid = :1 /*%2*/'; for c in 1 .. 20 loop if bitand (x, power (2, c-1)) > 0 or fast=1 then s := replace (s, '%1', 'n' || lpad(c, 2, '0') || '+%1'); end if; end loop; if instr(s, '+%1') > 0 then s := replace (s, '+%1'); if fast=1 then s := replace (s, '%2', gr); end if; --DBMS_OUTPUT.PUT_LINE(s); execute immediate s into n using r; tot := tot + n; end if; end loop; DBMS_OUTPUT.PUT_LINE(tot); -- 572966090 end; /
Stuck with a problem? Got Error? Ask ChatGPT!
Copy Clear