SELECT UTL_RAW.CAST_FROM_BINARY_INTEGER(643778,1);
SELECT UTL_RAW.CAST_FROM_BINARY_INTEGER(643778,2);
SELECT UTL_RAW.CAST_FROM_BINARY_INTEGER(2147483647,1);
SELECT UTL_RAW.CAST_FROM_BINARY_INTEGER(-2147483648,2);
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('12',1);
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123',2);
CREATE SCHEMA FVT_GAUSSDB_ADAPT;
create table FVT_GAUSSDB_ADAPT.UTL_RAW_TO_BININT_004(NUM raw, ID integer);
insert into FVT_GAUSSDB_ADAPT.UTL_RAW_TO_BININT_004 values('1234567890', 1);
insert into FVT_GAUSSDB_ADAPT.UTL_RAW_TO_BININT_004 values('001230000', 2);
insert into FVT_GAUSSDB_ADAPT.UTL_RAW_TO_BININT_004 values('0000000000', 3);
insert into FVT_GAUSSDB_ADAPT.UTL_RAW_TO_BININT_004 values('abcdef0ABCDEF', 4);
select UTL_RAW.CAST_TO_BINARY_INTEGER(NUM, 1) as RESULT from FVT_GAUSSDB_ADAPT.UTL_RAW_TO_BININT_004 order by ID;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789',1) FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789',2) FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789A',1)FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789A',2) FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789AB',1)FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789AB',2)FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789ABC',1)FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789ABC',2) FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789ABCD',1) FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789ABCD',2) FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789ABCDE',1) FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789ABCDE',2) FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789ABCDEF',1) FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789ABCDEF',2) FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('123456789') FROM DUAL;
select UTL_RAW.CAST_TO_BINARY_INTEGER(UTL_RAW.CAST_FROM_BINARY_INTEGER('1073741824',1), '1') as RESULT from dual;
select UTL_RAW.CAST_TO_BINARY_INTEGER(UTL_RAW.CAST_FROM_BINARY_INTEGER('-1073741824',2), '2') as RESULT from dual;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('1234') FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('1234',1) FROM DUAL;
SELECT UTL_RAW.CAST_TO_BINARY_INTEGER('1234',2) FROM DUAL;
SELECT UTL_RAW.CAST_FROM_BINARY_INTEGER(12) FROM DUAL;
SELECT UTL_RAW.CAST_FROM_BINARY_INTEGER(1234,1) FROM DUAL;
SELECT UTL_RAW.CAST_FROM_BINARY_INTEGER(1234,2) FROM DUAL;
create table FVT_GAUSSDB_ADAPT.UTL_RAW_TO_BININT_002(NUM raw);
insert into FVT_GAUSSDB_ADAPT.UTL_RAW_TO_BININT_002 values('0001');
select UTL_RAW.CAST_TO_BINARY_INTEGER(NUM) as RESULT from FVT_GAUSSDB_ADAPT.UTL_RAW_TO_BININT_002;
create table FVT_GAUSSDB_ADAPT.UTL_RAW_FROM_BININT_002(NUM BINARY_INTEGER);
insert into FVT_GAUSSDB_ADAPT.UTL_RAW_FROM_BININT_002 values(1);
select UTL_RAW.CAST_FROM_BINARY_INTEGER(NUM) as RESULT from FVT_GAUSSDB_ADAPT.UTL_RAW_FROM_BININT_002;
select UTL_RAW.CAST_FROM_BINARY_INTEGER(2147483647) from dual;
select UTL_RAW.CAST_FROM_BINARY_INTEGER(2147483647+1) from dual;
DROP TABLE FVT_GAUSSDB_ADAPT.UTL_RAW_TO_BININT_002 CASCADE;
DROP TABLE FVT_GAUSSDB_ADAPT.UTL_RAW_FROM_BININT_002 CASCADE;
DROP TABLE FVT_GAUSSDB_ADAPT.UTL_RAW_TO_BININT_004 CASCADE;
DROP SCHEMA FVT_GAUSSDB_ADAPT CASCADE;
SELECT DBMS_RANDOM.SEED(3999);
SELECT DBMS_RANDOM.SEED(-2147483648);
SELECT DBMS_RANDOM.SEED(2147483647);
SELECT DBMS_RANDOM.VALUE(2,5);
SELECT DBMS_RANDOM.VALUE(5,2);
SELECT DBMS_RANDOM.VALUE(7,7);
SELECT DBMS_RANDOM.VALUE(-1.1,2.1);
SELECT DBMS_RANDOM.VALUE();
SELECT * FROM SYS.DUAL;
create or replace directory tmp_path as '/tmp/';
CREATE OR REPLACE FUNCTION gen_file(dir text) RETURNS void AS $$
DECLARE
f utl_file.file_type;
BEGIN
f := utl_file.fopen(dir, 'regress_sample.txt', 'w');
PERFORM utl_file.put_line(f, 'ABC');
PERFORM utl_file.put_line(f, '123'::numeric);
PERFORM utl_file.put_line(f, '-----');
PERFORM utl_file.new_line(f);
PERFORM utl_file.put_line(f, '-----');
PERFORM utl_file.new_line(f, 0);
PERFORM utl_file.put_line(f, '-----');
PERFORM utl_file.new_line(f, 2);
PERFORM utl_file.put_line(f, '-----');
PERFORM utl_file.put(f, 'A');
PERFORM utl_file.put(f, 'B');
PERFORM utl_file.new_line(f);
PERFORM utl_file.putf(f, '[1=%s, 2=%s, 3=%s, 4=%s, 5=%s]', '1', '2', '3', '4', '5');
PERFORM utl_file.new_line(f);
PERFORM utl_file.put_line(f, '1234567890');
f := utl_file.fclose(f);
END;
$$ LANGUAGE plpgsql;
* Test functions utl_file.fflush(utl_file.file_type)
* This function tests the positive test case of fflush by reading from the
* file after flushing the contents to the file.
*/
CREATE OR REPLACE FUNCTION checkFlushFile(dir text) RETURNS void AS $$
DECLARE
f utl_file.file_type;
f1 utl_file.file_type;
ret_val text;
f_in text := 'This is in buffer for put';
i integer;
BEGIN
f := utl_file.fopen(dir, 'regress_sample.txt', 'a');
PERFORM utl_file.put_line(f, 'ABC');
PERFORM utl_file.new_line(f);
PERFORM utl_file.put_line(f, '123'::numeric);
PERFORM utl_file.new_line(f);
PERFORM utl_file.putf(f, '[1=%s, 2=%s, 3=%s, 4=%s, 5=%s]', '1', '2', '3', '4', '5');
PERFORM utl_file.putf(f, '[1=%s, 2=%s, 3=%s, 4=%s]', '1', '2', '3', '4');
PERFORM utl_file.put(f, f_in);
PERFORM utl_file.fflush(f);
f1 := utl_file.fopen(dir, 'regress_sample.txt', 'r');
utl_file.get_line(f1, ret_val);
i := 1;
WHILE ret_val IS NOT NULL LOOP
RAISE NOTICE '[%] >>%<<', i,ret_val;
select utl_file.get_line(f1) into ret_val from dual;
i:=i+1;
END LOOP;
RAISE NOTICE '>>%<<', ret_val;
f1 := utl_file.fclose(f1);
f := utl_file.fclose(f);
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION read_file(dir text) RETURNS void AS $$
DECLARE
f utl_file.file_type;
BEGIN
f := utl_file.fopen(dir, 'regress_sample.txt', 'r');
FOR i IN 1..11 LOOP
RAISE NOTICE '[%] >>%<<', i, utl_file.get_line(f);
END LOOP;
RAISE NOTICE '>>%<<', utl_file.get_line(f, 4);
RAISE NOTICE '>>%<<', utl_file.get_line(f, 4);
RAISE NOTICE '>>%<<', utl_file.get_line(f);
RAISE NOTICE '>>%<<', utl_file.get_line(f);
EXCEPTION
WHEN others THEN
RAISE NOTICE 'finish % ', sqlerrm;
RAISE NOTICE 'is_open = %', utl_file.is_open(f);
PERFORM utl_file.fclose_all();
RAISE NOTICE 'is_open = %', utl_file.is_open(f);
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE PROCEDURE get_fseek(dir text, abs_offset number, rel_offset number)
AS
l_file utl_file.file_type;
l_buffer VARCHAR2(32767);
BEGIN
l_file := utl_file.fopen(location => dir, filename => 'regress_sample.txt',open_mode => 'R');
utl_file.fseek(file => l_file, absolute_offset=>abs_offset, relative_offset=>rel_offset);
utl_file.fclose(file=>l_file);
END;
/
SELECT EXISTS(SELECT * FROM pg_catalog.pg_type where typname='file_type') AS exists;
SELECT utl_file.fopen('tmp_path','regress_sample.txt','r');
SELECT utl_file.fopen('tmp_path1','file.txt.','w');
SELECT utl_file.fopen('tmp_path','non_existent_file.txt','r');
SELECT utl_file.fopen('tmp_path','../file.txt','w');
SELECT utl_file.fcopy('tmp_path', '//.//regress_sample.txt', 'tmp_path', './regress_sample1.txt');
SELECT gen_file('tmp_path');
SELECT utl_file.fcopy('tmp_path', 'regress_sample.txt', 'tmp_path', 'regress_sample1.txt');
SELECT utl_file.fcopy('tmp_path', 'regress_sample.txt', 'data5.txt', 1, 1, 10);
SELECT utl_file.fgetattr('tmp_path', 'regress_sample1.txt');
SELECT utl_file.frename('tmp_path', 'regress_sample1.txt', 'tmp_path', 'regress_sample2.txt', true);
SELECT * FROM utl_file.fgetattr('tmp_path', 'regress_sample1.txt');
SELECT * FROM utl_file.fgetattr('tmp_path', 'regress_sample2.txt');
SELECT read_file('tmp_path');
SELECT utl_file.fremove('tmp_path', 'regress_sample2.txt');
SELECT * FROM utl_file.fgetattr('tmp_path', 'regress_sample2.txt');
DROP FUNCTION gen_file(text);
DROP FUNCTION read_file(text);
SELECT checkFlushFile('tmp_path');
select get_fseek('tmp_path', NULL, NULL) from dual;
select get_fseek('tmp_path', NULL, 100) from dual;
select get_fseek('tmp_path', NULL, 1000000) from dual;
select get_fseek('tmp_path', NULL, -1000000) from dual;
select get_fseek('tmp_path', 0, NULL) from dual;
select get_fseek('tmp_path', 100, NULL) from dual;
select get_fseek('tmp_path', 100000, NULL) from dual;
select get_fseek('tmp_path', -10000, NULL) from dual;
SELECT utl_file.fremove('tmp_path', 'regress_sample.txt');
DROP FUNCTION checkFlushFile(text);
drop directory if exists tmp_path;
CREATE OR REPLACE PROCEDURE test_dbms_output_enable
AS
str varchar2(100) := 'abc';
BEGIN
RETURN;
END;
/
CREATE OR REPLACE PROCEDURE test_put
AS
str varchar2(100) := 'abc';
BEGIN
RETURN;
END;
/
call test_put();
CREATE OR REPLACE PROCEDURE test_put1
AS
i int := 1;
BEGIN
RETURN;
END;
/
call test_put1();
CREATE OR REPLACE FUNCTION test_put2
RETURN void
AS
i int := 1;
BEGIN
raise notice '%', i;
RETURN;
END;
/
call test_put2();
CREATE OR REPLACE PROCEDURE test_put3
AS
i int := 1;
BEGIN
raise notice '%', i;
RETURN;
END;
/
call test_put3();
CREATE OR REPLACE PROCEDURE test_put4
AS
i int := 1;
BEGIN
RETURN;
END;
/
call test_put4();
CREATE OR REPLACE PROCEDURE test_put5
AS
i int := 1;
BEGIN
raise exception no_data_found;
RETURN;
EXCEPTION
WHEN NO_DATA_FOUND THEN
END;
/
call test_put5();
CREATE OR REPLACE PROCEDURE test_put6
AS
i int := 1;
BEGIN
raise exception no_data_found;
RETURN;
EXCEPTION
WHEN NO_DATA_FOUND THEN
END;
/
call test_put6();
SELECT test_put6() from dual;
declare
a int := 1;
b int;
c int;
begin
test_put6();
end;
/
*/
CREATE OR REPLACE PROCEDURE test_put7
AS
i int := 1;
str text;
BEGIN
str = rpad('1', 1024*1024, '1');
RETURN;
END;
/
CALL test_put7();
CREATE OR REPLACE PROCEDURE test_put8
AS
i int := 1;
str text;
BEGIN
str = rpad('1', 1024*1024, '1');
RETURN;
END;
/
CALL test_put8();
DROP PROCEDURE test_put;
DROP PROCEDURE test_put1;
DROP PROCEDURE test_put2;
DROP PROCEDURE test_put3;
DROP PROCEDURE test_put4;
DROP PROCEDURE test_put7;
DROP PROCEDURE test_put8;
CREATE TABLE test_lob (a int, data_blob blob, data_clob clob);
INSERT INTO test_lob values (1,'abc','aaaaaaa');
create table test_lob_copy (a int, data_blob blob, data_clob clob);
insert into test_lob_copy values (1,'def', 'def_clob');
CREATE OR REPLACE PROCEDURE test_lob
AS
str varchar2(100) := 'ffffffff';
source_blob blob;
dest_blob blob;
copyto_blob blob;
source_clob clob;
dest_clob clob;
amount int;
PSV_SQL varchar2(100);
PSV_SQL1 varchar2(100);
a int :=1;
BEGIN
source_blob := utl_raw.cast_to_raw(str);
amount := utl_raw.length(source_blob);
PSV_SQL :='select data_blob, data_clob from test_lob for update';
PSV_SQL1 := 'select data_blob from test_lob_copy for update';
EXECUTE IMMEDIATE PSV_SQL into dest_blob,dest_clob;
RAISE NOTICE 'dest_clob: %', dest_clob;
EXECUTE IMMEDIATE PSV_SQL1 into copyto_blob;
DBMS_LOB.OPEN(dest_blob, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.OPEN(copyto_blob, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.WRITE(dest_blob, amount, 1, source_blob);
DBMS_LOB.WRITEAPPEND(dest_blob, amount, source_blob);
DBMS_LOB.ERASE(dest_blob, a, 1);
DBMS_LOB.COPY(copyto_blob, dest_blob, amount, 10, 1);
source_clob := str;
amount := DBMS_LOB.GETLENGTH(source_clob);
raise notice 'amount : %', amount;
DBMS_LOB.OPEN(dest_clob, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.WRITE(dest_clob, amount, 1, source_clob);
RAISE NOTICE 'dest_clob: % source_clob: %', dest_clob, source_clob;
DBMS_LOB.WRITEAPPEND(dest_clob, amount, source_clob);
RAISE NOTICE 'dest_clob: % source_clob: %', dest_clob, source_clob;
UPDATE test_lob SET data_blob = dest_blob,data_clob = dest_clob;
UPDATE test_lob_copy SET data_blob = copyto_blob;
DBMS_LOB.CLOSE(dest_blob);
DBMS_LOB.CLOSE(copyto_blob);
DBMS_LOB.CLOSE(dest_clob);
RETURN;
END;
/
CALL test_lob();
SELECT * FROM test_lob;
SELECT * FROM test_lob_copy;
CREATE OR REPLACE PROCEDURE test_lob_open()
AS
str varchar2(100) := 'abcdef';
source raw(100);
dest blob;
amount int;
PSV_SQL varchar2(100);
a int :=1;
BEGIN
source := utl_raw.cast_to_raw(str);
amount := utl_raw.length(source);
PSV_SQL :='select data_blob from test_lob for update';
EXECUTE IMMEDIATE PSV_SQL into dest;
DBMS_LOB.OPEN(dest);
RETURN;
END;
/
CREATE OR REPLACE PROCEDURE test_lob_open1()
AS
str varchar2(100) := 'abcdef';
source raw(100);
dest blob;
amount int;
PSV_SQL varchar2(100);
a int :=1;
BEGIN
source := utl_raw.cast_to_raw(str);
amount := utl_raw.length(source);
PSV_SQL :='select data_blob from test_lob for update';
EXECUTE IMMEDIATE PSV_SQL into dest;
DBMS_LOB.OPEN(dest, a);
RETURN;
END;
/
CREATE OR REPLACE PROCEDURE test_lob_open2()
AS
str varchar2(100) := 'abcdef';
source raw(100);
dest blob;
amount int;
PSV_SQL varchar2(100);
a int :=1;
BEGIN
source := utl_raw.cast_to_raw(str);
amount := utl_raw.length(source);
PSV_SQL :='select data_blob from test_lob for update';
EXECUTE IMMEDIATE PSV_SQL into dest;
DBMS_LOB.OPEN(dest, DBMS_LOB.LOB_READWRITE, a);
RETURN;
END;
/
CREATE OR REPLACE PROCEDURE test_lob_open3()
AS
str varchar2(100) := 'abcdef';
source raw(100);
dest blob;
amount int;
PSV_SQL varchar2(100);
a int :=1;
BEGIN
source := utl_raw.cast_to_raw(str);
amount := utl_raw.length(source);
PSV_SQL :='select data_blob from test_lob for update';
EXECUTE IMMEDIATE PSV_SQL into dest;
DBMS_LOB.OPEN(dest, DBMS_LOB.LOB_READWRITE);
RETURN;
END;
/
CALL test_lob_open3();
declare
test_clob clob;
begin
DBMS_LOB.OPEN(test_clob);
end;
/
declare
test_clob clob;
a int := 10;
begin
DBMS_LOB.OPEN(dest_clob, a);
end;
/
declare
test_clob clob;
a int := 1;
begin
DBMS_LOB.OPEN(test_clob,DBMS_LOB.LOB_READWRITE,a);
end;
/
declare
test_clob clob;
begin
DBMS_LOB.OPEN(test_clob,DBMS_LOB.LOB_READWRITE);
DBMS_LOB.CLOSE(test_clob);
end;
/
CREATE OR REPLACE PROCEDURE test_lob_close(flag int)
AS
str varchar2(100) := 'abcdef';
source raw(100);
dest blob;
amount int;
PSV_SQL varchar2(100);
a int :=1;
BEGIN
source := utl_raw.cast_to_raw(str);
amount := utl_raw.length(source);
PSV_SQL :='select data_blob from test_lob for update';
EXECUTE IMMEDIATE PSV_SQL into dest;
DBMS_LOB.OPEN(dest, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.CLOSE(dest);
RETURN;
END;
/
CALL test_lob_close();
CREATE OR REPLACE PROCEDURE test_lob_close1()
AS
str varchar2(100) := 'abcdef';
source raw(100);
dest blob;
amount int;
PSV_SQL varchar2(100);
a int :=1;
BEGIN
source := utl_raw.cast_to_raw(str);
amount := utl_raw.length(source);
PSV_SQL :='select data_blob from test_lob for update';
EXECUTE IMMEDIATE PSV_SQL into dest;
DBMS_LOB.OPEN(dest, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.CLOSE(dest, a);
RETURN;
END;
/
CREATE OR REPLACE PROCEDURE test_lob_close2()
AS
str varchar2(100) := 'abcdef';
source raw(100);
dest blob;
amount int;
PSV_SQL varchar2(100);
a int :=1;
BEGIN
source := utl_raw.cast_to_raw(str);
amount := utl_raw.length(source);
PSV_SQL :='select data_blob from test_lob for update';
EXECUTE IMMEDIATE PSV_SQL into dest;
DBMS_LOB.OPEN(dest, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.CLOSE();
RETURN;
END;
/
CREATE OR REPLACE PROCEDURE test_lob_write_blob(flag int)
AS
str varchar2(100) := 'abcdef';
source blob;
dest_blob blob;
amount int;
PSV_SQL varchar2(100);
BEGIN
source := utl_raw.cast_to_raw(str);
amount := utl_raw.length(source);
PSV_SQL :='select data_blob from test_lob for update';
EXECUTE IMMEDIATE PSV_SQL into dest_blob;
IF flag = 1 THEN
DBMS_LOB.WRITE(dest_blob, 0, 1, source);
ELSIF flag = 2 THEN
DBMS_LOB.WRITE(dest_blob, 1000, 1, source);
ELSIF flag = 3 THEN
DBMS_LOB.WRITE(dest_blob, 1, 0, source);
ELSIF flag = 4 THEN
DBMS_LOB.WRITE(dest_blob, 1, 1024 * 1024 * 1024 + 1, source);
ELSIF flag = 5 THEN
DBMS_LOB.WRITE(dest_blob, 1, 50, source);
UPDATE test_lob SET data_blob = dest_blob;
END IF;
RETURN;
END;
/
CALL test_lob_write_blob(1);
CALL test_lob_write_blob(2);
CALL test_lob_write_blob(3);
CALL test_lob_write_blob(4);
CALL test_lob_write_blob(5);
SELECT * from test_lob;
CREATE OR REPLACE PROCEDURE test_lob_write_clob(flag int)
AS
str varchar2(100) := 'abcdef';
amount int;
dest_clob clob;
PSV_SQL varchar2(100);
source raw(200);
BEGIN
source := utl_raw.cast_to_raw(str);
amount := utl_raw.length(source);
PSV_SQL :='select data_clob from test_lob for update';
EXECUTE IMMEDIATE PSV_SQL into dest_clob;
IF flag = 1 THEN
DBMS_LOB.WRITE(dest_clob, 0, 1, str);
ELSIF flag = 2 THEN
DBMS_LOB.WRITE(dest_clob, 1000, 1, str);
ELSIF flag = 3 THEN
DBMS_LOB.WRITE(dest_clob, 1, 0, str);
ELSIF flag = 4 THEN
DBMS_LOB.WRITE(dest_clob, 1, 1024 * 1024 * 1024 + 1, str);
ELSIF flag = 5 THEN
DBMS_LOB.WRITE(dest_clob, 1, 50, source);
UPDATE test_lob SET data_clob = dest_clob;
END IF;
RETURN;
END;
/
CALL test_lob_write_clob(1);
CALL test_lob_write_clob(2);
CALL test_lob_write_clob(3);
CALL test_lob_write_clob(4);
CALL test_lob_write_clob(5);
SELECT * from test_lob;
CREATE OR REPLACE PROCEDURE test_lob_writeappend_blob(flag int)
AS
str varchar2(100) := 'abcdef';
source blob;
dest blob;
copyto blob;
amount int;
PSV_SQL varchar2(100);
PSV_SQL1 varchar2(100);
a int :=1;
BEGIN
source := utl_raw.cast_to_raw(str);
amount := utl_raw.length(source);
PSV_SQL :='select data_blob from test_lob for update';
EXECUTE IMMEDIATE PSV_SQL into dest;
IF flag = 1 THEN
DBMS_LOB.WRITEAPPEND(dest, 0, source);
ELSIF flag = 2 THEN
DBMS_LOB.WRITEAPPEND(dest, 1000, source);
END IF;
RETURN;
END;
/
CALL test_lob_writeappend_blob(1);
CALL test_lob_writeappend_blob(2);
SELECT * from test_lob;
CREATE OR REPLACE PROCEDURE test_lob_writeappend_clob(flag int)
AS
str varchar2(100) := 'abcdef';
dest clob;
PSV_SQL varchar2(100);
BEGIN
PSV_SQL :='select data_clob from test_lob for update';
EXECUTE IMMEDIATE PSV_SQL into dest;
IF flag = 1 THEN
DBMS_LOB.WRITEAPPEND(dest, 0, str);
ELSIF flag = 2 THEN
DBMS_LOB.WRITEAPPEND(dest, 1000, str);
END IF;
RETURN;
END;
/
CALL test_lob_writeappend_clob(1);
CALL test_lob_writeappend_clob(2);
SELECT * from test_lob;
CREATE OR REPLACE PROCEDURE test_lob_erase(flag int)
AS
str varchar2(100) := 'abcdef';
source raw(100);
dest blob;
copyto blob;
amount int;
PSV_SQL varchar2(100);
PSV_SQL1 varchar2(100);
a int :=0;
BEGIN
source := utl_raw.cast_to_raw(str);
amount := utl_raw.length(source);
PSV_SQL :='select data_blob from test_lob for update';
PSV_SQL1 := 'select data_blob from test_lob_copy for update';
EXECUTE IMMEDIATE PSV_SQL into dest;
EXECUTE IMMEDIATE PSV_SQL1 into copyto;
IF flag = 1 THEN
DBMS_LOB.ERASE(dest, a, 1);
ELSIF flag = 2 THEN
a := 1024 * 1024 * 1024 + 1;
DBMS_LOB.ERASE(dest, a, 1);
ELSIF flag = 3 THEN
a := 1;
DBMS_LOB.ERASE(dest, a, 0);
ELSIF flag = 4 THEN
DBMS_LOB.ERASE(dest, a, 1024 * 1024 * 1024);
ELSIF flag = 5 THEN
a := 100;
DBMS_LOB.ERASE(dest, a, 1);
ELSIF flag = 6 THEN
a := 100;
DBMS_LOB.ERASE(dest, a, 1000);
END IF;
UPDATE test_lob SET data_blob = dest;
RETURN;
END;
/
CALL test_lob_erase(1);
CALL test_lob_erase(2);
CALL test_lob_erase(3);
CALL test_lob_erase(4);
CALL test_lob_erase(5);
CALL test_lob_erase(6);
SELECT * FROM test_lob;
CREATE OR REPLACE PROCEDURE test_lob_copy(flag int)
AS
str varchar2(100) := 'abcdef';
source blob;
dest blob;
copyto blob;
amount int;
PSV_SQL varchar2(100);
PSV_SQL1 varchar2(100);
a int :=1000;
BEGIN
source := utl_raw.cast_to_raw(str);
amount := utl_raw.length(source);
PSV_SQL :='select data_blob from test_lob for update';
PSV_SQL1 := 'select data_blob from test_lob_copy for update';
EXECUTE IMMEDIATE PSV_SQL into dest;
EXECUTE IMMEDIATE PSV_SQL1 into copyto;
DBMS_LOB.WRITEAPPEND(dest, amount, source);
IF flag = 1 THEN
DBMS_LOB.COPY(copyto, dest, 0, 20, 1);
ELSIF flag = 2 THEN
DBMS_LOB.COPY(copyto, dest, 1, 0, 1);
ELSIF flag = 3 THEN
DBMS_LOB.COPY(copyto, dest, 1, 1, 0);
ELSIF flag = 4 THEN
DBMS_LOB.COPY(copyto, dest, 1, 1, 1000);
ELSIF flag = 5 THEN
DBMS_LOB.COPY(copyto, dest, 500, 1, 1);
ELSIF flag = 6 THEN
DBMS_LOB.COPY(copyto, dest, 500, 50, 1);
END IF;
UPDATE test_lob SET data_blob = dest;
UPDATE test_lob_copy SET data_blob = copyto;
RETURN;
END;
/
CALL test_lob_copy(1);
CALL test_lob_copy(2);
CALL test_lob_copy(3);
CALL test_lob_copy(4);
SELECT * FROM test_lob;
SELECT * FROM test_lob_copy;
CALL test_lob_copy(5);
SELECT * FROM test_lob;
SELECT * FROM test_lob_copy;
CALL test_lob_copy(6);
SELECT * FROM test_lob;
SELECT * FROM test_lob_copy;
DROP PROCEDURE test_lob;
DROP PROCEDURE test_lob_close;
DROP PROCEDURE test_lob_write_blob;
DROP PROCEDURE test_lob_write_clob;
DROP PROCEDURE test_lob_writeappend_blob;
DROP PROCEDURE test_lob_writeappend_clob;
DROP PROCEDURE test_lob_erase;
DROP PROCEDURE test_lob_copy;
DROP TABLE test_lob;
DROP TABLE test_lob_copy;
CREATE TABLE test_lob(blob_data BLOB, text_data varchar2(10), char_data char, sn int);
INSERT INTO test_lob VALUES('6162','6162','a',1);
INSERT INTO test_lob VALUES ('616','616','a',2);
SELECT DBMS_LOB.GETLENGTH(blob_data) FROM test_lob WHERE sn = 1;
SELECT DBMS_LOB.GETLENGTH(text_data) FROM test_lob WHERE sn = 1;
SELECT DBMS_LOB.GETLENGTH(char_data) FROM test_lob WHERE sn = 1;
SELECT DBMS_LOB.GETLENGTH(blob_data) FROM test_lob WHERE sn = 2;
SELECT DBMS_LOB.GETLENGTH(text_data) FROM test_lob WHERE sn = 2;
SELECT DBMS_LOB.GETLENGTH(char_data) FROM test_lob WHERE sn = 2;
SELECT DBMS_LOB.GETLENGTH('123456789') FROM DUAL;
SELECT DBMS_LOB.GETLENGTH('12345678') FROM DUAL;
SELECT DBMS_LOB.GETLENGTH('双面人') FROM DUAL;
SELECT DBMS_LOB.GETLENGTH(' 双 面%4人A ') FROM DUAL;
SELECT DBMS_LOB.GETLENGTH('') FROM DUAL;
SELECT DBMS_LOB.GETLENGTH('1236633778799');
SELECT DBMS_LOB.GETLENGTH('gdfgsdfgjskejhjj');
SELECT DBMS_LOB.GETLENGTH('gdfgsdfgjske\\jhjj');
select dbms_lob.substr('123的成嘉法就看得见风发',10,1) except select substr('123的成嘉法就看得见风发',1,10);
select lengthb(dbms_lob.substr('123的成嘉法就看得见风发',10,1)) except select lengthb(substr('123的成嘉法就看得见风发',1,10));
select dbms_lob.trim('123的成嘉宾均具卫生法就看得见风发',13) except select substr('123的成嘉宾均具卫生法就看得见风发',1,13);
select lengthb(dbms_lob.trim('123的成嘉宾均具卫生法就看得见风发',13)) except select lengthb(substr('123的成嘉宾均具卫生法就看得见风发',1,13));
select dbms_lob.write(' 可以将管道或标准输入', 2, 1, '华为');
select dbms_lob.write(' 可以将管道或标准输入', 1, 20, '华为');
select dbms_lob.write(' 可以将管道或标准输入', 2, 12, '华为');
DELETE FROM test_lob;
INSERT INTO test_lob VALUES ('616263646566676869','616','a',3);
CREATE OR REPLACE PROCEDURE test_lob_erase(amt int, pos int)
AS
lob BLOB;
PSV_SQL varchar2(100);
BEGIN
PSV_SQL :='select blob_data from test_lob for update';
EXECUTE IMMEDIATE PSV_SQL INTO lob;
IF (pos = 0) THEN
DBMS_LOB.ERASE(lob, amt);
ELSE
DBMS_LOB.ERASE(lob, amt, pos);
END IF;
UPDATE test_lob SET blob_data=lob;
RETURN;
END;
/
SELECT blob_data FROM test_lob;
CALL test_lob_erase(1,0);
SELECT blob_data FROM test_lob;
CALL test_lob_erase(3,0);
SELECT blob_data FROM test_lob;
CALL test_lob_erase(2,5);
SELECT blob_data FROM test_lob;
DROP PROCEDURE test_lob_erase;
DROP TABLE test_lob;
CREATE SCHEMA FVT_GAUSSDB_ADAPT;
CREATE OR REPLACE PROCEDURE FVT_GAUSSDB_ADAPT.READ_006
AS
TEMP BLOB;
BEGIN
DBMS_LOB.READ('ABCDEF012345'::BLOB,2,16,TEMP);
END;
/
CALL FVT_GAUSSDB_ADAPT.READ_006();
DROP SCHEMA FVT_GAUSSDB_ADAPT CASCADE;
SELECT DBMS_LOB.READ('1234456'::blob,3,1);
SELECT DBMS_LOB.READ('123456789012345'::blob,2,1);
select dbms_lob.instr('中国人美国人韩国人'::clob ,'国',1,2) from dual;
select dbms_lob.instr('abcabc'::clob,'',1,1) from dual;
select dbms_lob.instr('abcabc'::clob,'ab', -1, 1) from dual;
select dbms_lob.instr('abcabc'::clob,'ab') from dual;
select dbms_lob.instr('abcabc'::clob,'ab', 1, -1) from dual;
select dbms_lob.instr('abcabc'::clob,'ab', 1, 10) from dual;
select dbms_lob.instr('abcabc'::clob,'abaaaaaaaa', 1, 1) from dual;
select dbms_lob.instr('abcabcabcabca'::blob, 'abc'::blob,1,1) from dual;
select dbms_lob.instr('abcabcabcabca'::blob, 'abc'::blob,1,3) from dual;
select dbms_lob.instr('abcabcabcabca'::blob, 'abcggg'::blob,1,3) from dual;
DECLARE
v_clob1 cLOB;
v_clob2 clob;
v_blob1 blob;
v_blob2 blob;
BEGIN
DBMS_LOB.OPEN(v_clob1, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.OPEN(v_clob2, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.OPEN(v_blob1, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.OPEN(v_blob2, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.CREATETEMPORARY(v_clob1, TRUE);
DBMS_LOB.CREATETEMPORARY(v_clob2, TRUE);
DBMS_LOB.CREATETEMPORARY(v_blob1, TRUE);
DBMS_LOB.CREATETEMPORARY(v_blob2, TRUE);
v_clob1 := '11111';
v_clob2 := '22222';
v_blob1 := '11111';
v_blob2 := '22222';
DBMS_LOB.WRITEAPPEND(v_clob1, 3, v_clob2);
RAISE NOTICE 'v_string: %' ,v_clob1;
DBMS_LOB.WRITEAPPEND(v_blob1, 3, v_blob2);
RAISE NOTICE 'v_string: %' ,v_blob1;
DBMS_LOB.APPEND(v_clob1,v_clob2);
RAISE NOTICE 'APPEND v_clob1 AND v_clob2: %' ,v_clob1;
DBMS_LOB.APPEND(v_blob1, v_blob2);
RAISE NOTICE 'APPEND v_blob1 AND v_blob2: %' ,v_blob1;
END;
/
drop table if exists test_lob;
CREATE TABLE test_lob(site_id NUMBER(3),audio BLOB ,document CLOB);
insert into test_lob values (1,utl_raw.cast_to_raw('abcabc'), 'abcabc');
insert into test_lob values (2,utl_raw.cast_to_raw('abcdefghigk'), 'abcdefghigk');
insert into test_lob values (3,utl_raw.cast_to_raw('abcdefghigk'), 'abcdefghigk');
CREATE OR REPLACE PROCEDURE test_lob_read_clob(amount int, offset1 int)
AS
buffer text;
varcl clob;
BEGIN
SELECT document INTO varcl FROM test_lob WHERE site_id = 2;
dbms_lob.read(varcl,amount,offset1,buffer);
dbms_lob.close(varcl);
END;
/
call test_lob_read_clob(2,1);
call test_lob_read_clob(0,1);
call test_lob_read_clob(2,0);
call test_lob_read_clob(2,11);
call test_lob_read_clob(2,22);
CREATE OR REPLACE PROCEDURE test_lob_read_blob(amount int, offset1 int)
as
buffer raw(200);
varbl blob;
BEGIN
SELECT audio INTO varbl FROM test_lob WHERE site_id = 2;
dbms_lob.read(varbl,amount,offset1,buffer);
dbms_lob.close(varbl);
END;
/
call test_lob_read_blob(2,1);
call test_lob_read_blob(0,1);
call test_lob_read_blob(2,0);
call test_lob_read_blob(2,11);
call test_lob_read_blob(2,22);
CREATE OR REPLACE PROCEDURE TEST_LOB_APPEND()
AS
str text := 'aaaaaaaaaaa';
varcl CLOB;
vastr VARCHAR2(1000);
blob1 blob;
blob2 blob;
BEGIN
vastr := ', this cloumn type is lob';
blob1 := utl_raw.cast_to_raw(str);
SELECT audio, document INTO blob2,varcl FROM test_lob WHERE site_id = 2 FOR UPDATE;
DBMS_LOB.APPEND(varcl, vastr);
DBMS_LOB.APPEND(blob2, blob1);
END;
/
CREATE OR REPLACE PROCEDURE test_lob_trim_clob(len integer)
AS
varcl CLOB;
BEGIN
SELECT document INTO varcl FROM test_lob WHERE site_id = 2 FOR UPDATE;
DBMS_LOB.TRIM(varcl, len);
DBMS_LOB.CLOSE(varcl);
END;
/
call test_lob_trim_clob(0);
call test_lob_trim_clob(1);
call test_lob_trim_clob(4);
call test_lob_trim_clob(100);
CREATE OR REPLACE PROCEDURE test_lob_trim_blob(len integer)
AS
varbl BLOB;
BEGIN
SELECT audio INTO varbl FROM test_lob WHERE site_id = 2 FOR UPDATE;
DBMS_LOB.TRIM(varbl, len);
DBMS_LOB.CLOSE(varbl);
END;
/
call test_lob_trim_blob(0);
call test_lob_trim_blob(1);
call test_lob_trim_blob(11);
call test_lob_trim_blob(1000);
CREATE OR REPLACE PROCEDURE test_lob_compare(amount int, offset1 int, offset2 int)
AS
varc1 CLOB;
varc2 CLOB;
varc3 CLOB;
varb1 BLOB;
varb2 BLOB;
varb3 BLOB;
len NUMBER(4);
BEGIN
SELECT audio, document INTO varb1,varc1 FROM test_lob WHERE site_id = 1 FOR UPDATE;
SELECT audio, document INTO varb2,varc2 FROM test_lob WHERE site_id = 2 FOR UPDATE;
SELECT audio, document INTO varb3,varc3 FROM test_lob WHERE site_id = 3 FOR UPDATE;
len := DBMS_LOB.COMPARE(varc3,varc1);
len := DBMS_LOB.COMPARE(varc1,varc2);
len := DBMS_LOB.COMPARE(varc2,varc3);
len := DBMS_LOB.COMPARE(varc3,varc1, amount, offset1,offset2);
len := DBMS_LOB.COMPARE(varc1,varc2, amount, offset1,offset2);
len := DBMS_LOB.COMPARE(varc2,varc3, amount, offset1,offset2);
len := DBMS_LOB.COMPARE(varb3,varb1);
len := DBMS_LOB.COMPARE(varb1,varb2);
len := DBMS_LOB.COMPARE(varb2,varb3);
len := DBMS_LOB.COMPARE(varb3,varb1,amount, offset1, offset2);
len := DBMS_LOB.COMPARE(varb1,varb2,amount, offset1, offset2);
len := DBMS_LOB.COMPARE(varb2,varb3,amount, offset1, offset2);
DBMS_LOB.CLOSE(varc1);
DBMS_LOB.CLOSE(varc2);
DBMS_LOB.CLOSE(varc3);
DBMS_LOB.CLOSE(varb1);
DBMS_LOB.CLOSE(varb2);
DBMS_LOB.CLOSE(varb3);
END;
/
call test_lob_compare(3,1,2);
call test_lob_compare(3,3,2);
call test_lob_compare(100,1,2);
call test_lob_compare(100,11,11);
CREATE OR REPLACE PROCEDURE test_lob_substr_clob(amount int, offset1 int)
AS
varcl CLOB;
rescl clob;
BEGIN
SELECT document INTO varcl FROM test_lob WHERE site_id = 2 FOR UPDATE;
rescl := DBMS_LOB.SUBSTR(varcl, amount, offset1);
END;
/
call test_lob_substr_clob(3,1);
call test_lob_substr_clob(11,3);
call test_lob_substr_blob(11,11);
call test_lob_substr_clob(11,12);
CREATE OR REPLACE PROCEDURE test_lob_substr_blob(amount int, offset1 int )
AS
blob1 blob;
resbl raw(200);
lenres int;
BEGIN
SELECT audio INTO blob1 FROM test_lob WHERE site_id = 2 FOR UPDATE;
resbl := DBMS_LOB.SUBSTR(blob1, amount, offset1);
lenres := utl_raw.length(resbl);
END;
/
call test_lob_substr_blob(3,1);
call test_lob_substr_blob(11,3);
call test_lob_substr_blob(11,11);
call test_lob_substr_blob(11,12);
drop function if exists test_lob_read_clob();
drop function if exists test_lob_read_blob();
drop function if exists test_lob_append();
drop function if exists test_lob_trim_clob();
drop function if exists test_lob_trim_blob();
drop function if exists test_lob_compare();
drop function if exists test_lob_substr_clob();
drop function if exists test_lob_substr_blob();
drop table if exists test_lob;
create or replace procedure putline_2k as
begin
DBMS_OUTPUT.PUT_LINE ('jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf1jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf1');
end;
/
create or replace procedure putline_2k1 as
begin
DBMS_OUTPUT.PUT_LINE ('jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf1jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf11');
end;
/
create or replace procedure put_2k as
begin
DBMS_OUTPUT.PUT ('jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf1jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf1');
end;
/
create or replace procedure put_2k1 as
begin
DBMS_OUTPUT.PUT ('jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf1jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf11');
end;
/
create or replace procedure put_2k2 as
begin
DBMS_OUTPUT.PUT ('jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf1jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf112');
end;
/
create or replace procedure putline_2k2 as
begin
DBMS_OUTPUT.PUT_LINE ('jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf1jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf112');
end;
/
create or replace procedure putline_32768 as
str text;
begin
str = rpad('3', 32768,'3');
DBMS_OUTPUT.PUT_LINE(str);
end;
/
create or replace procedure putline_32767 as
str text;
begin
str = rpad('3', 32767,'3');
DBMS_OUTPUT.PUT_LINE(str);
end;
/
create or replace procedure ppline_4k_1 as
str text;
begin
str = rpad('2', 2000,'3');
DBMS_OUTPUT.PUT_LINE(str);
end;
/
create or replace procedure ppline_4k_2 as
str text;
begin
str = rpad('2', 2000,'3');
DBMS_OUTPUT.PUT(str);
end;
/
create or replace procedure ppline_4k_3 as
str text;
begin
str = rpad('2', 2000,'3');
DBMS_OUTPUT.PUT_LINE(str);
end;
/
create or replace procedure nested_1 as
str text;
begin
putline_2k();
str = rpad('2', 2000,'3');
DBMS_OUTPUT.PUT_LINE(str);
end;
/
create or replace procedure dbms_enable(l int) as
begin
end;
/
call dbms_enable(5);
call putline_2k();
call putline_2k1();
call dbms_enable(2000);
call putline_2k();
call putline_2k1();
call dbms_enable(2001);
call putline_2k();
call putline_2k1();
call putline_2k2();
call dbms_enable(32767);
call putline_32768();
call putline_32767();
call dbms_enable(3000);
call put_2k();
call putline_2k();
call dbms_enable(3000);
call ppline_4k_1();
call ppline_4k_2();
call ppline_4k_3();
call nested_1();
begin
begin
DBMS_OUTPUT.PUT_LINE ('jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf1jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf112');
end;
DBMS_OUTPUT.PUT_LINE ('jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf1jtc9arx3suq617mmprobpaim4sdqzm1uzg3l3ngm1ctv8fi2zul8im8o0lk9ba5aaeuq5y1qg94oy7g7i8peqyijgr5bqj2z4diyuwrm56lves196jrlqbq3lqlxba5dnjyx7qtiib88sulefoo8tex9nohcnrgvgn3ejxyy07e33su2aa0syubnv3576n4e0ov7krz4294jin3f4hggzk0sy1rmmssqi1ml00wihuxnqcbxxe93b22ob11qz4dlmxwgnwwwcz5gv2bzaef3vb7dw04trq0s1oeu60i4ofmdtrv3sq8ds8o68upgj1j5uowy1xgmx9sqbmklsji1sd0fw8lhldc2o6b0d099qr72nvflyz8evc42xjccnyh7e1m03eq8917hsiem4gjjjbxqzfz46fr1e2m63icg1ulhznxor3bkyjlotggx22jpv91vak0ddt0gaz4csdqrc8yidqvnvacw781cr9tmmrg9l1mcsh3pxxgdd4e0u53rukuewe26dwkvesnph9y0ogobm4nop6e0mrrblgu5xd6rdqy0x8e6fzeas4ut54a5w7renivib3ge25by7el8q8nbqhk8hfiy5nquhuep1sxsem56rucrc9ux2f1hjn1rwjn0nmwaf079mkktcihbhoz1gnaty555sq1tagln6lil22ttag5cjbr4lakvt82lhp8x2quv9q7xfj90vk64atc45sgei1plojufbhjw4q0y9z9tt8v5ajuvzb407uqfs4mzmygxyzp5nwdkoigl3bzn99ogo0386vpxsvsladive369c872r5sg75337o9xekzi6xutqyt1jt07cp9fuj6loa5kk6q072krnrgsrsprm9mpiau3w882uyxrgol8ufygdpudlm22uwqkxlhutnhh9mp7j7lb97k4wpjspibplzmkhsor0lihpahf38jy1j05b1hnh2gg1wdoolfon9yuvf9szq6jkj6v9mf112');
end;
/
create or replace procedure put_simple as
begin
end;
/
create or replace procedure putline_simple as
begin
end;
/
create or replace procedure put_nested_1 as
begin
put_simple();
end;
/
create or replace procedure put_nested_2 as
begin
putline_simple();
end;
/
begin
end;
/
begin
end;
/
begin
end;
/
call put_simple();
call putline_simple();
call put_nested_1();
call put_nested_2();
create or replace function func_put returns text as $$
begin
end;
$$ LANGUAGE plpgsql;
create or replace function func_putline returns text as $$
begin
end;
$$ LANGUAGE plpgsql;
call func_put();
call func_putline();
CREATE OR REPLACE FUNCTION func_dbms_put(text) RETURNS void
AS 'select DBMS_OUTPUT.put($1)'
LANGUAGE SQL;
CREATE OR REPLACE FUNCTION func_dbms_putline(text) RETURNS void
AS 'select DBMS_OUTPUT.put_line($1)'
LANGUAGE SQL;
call func_dbms_put('hello ');
call func_dbms_putline('world');