oracle utlraw bitor,Oracle Oracle UTL_RAW类

General

Information

Source

{ORACLE_HOME}/rdbms/admin/utlraw.sql

First Available

7.3.4

Constants

Name

Data

Type

Value

big_endian

PLS_INTEGER

1

little_endian

PLS_INTEGER

2

machine_endian

PLS_INTEGER

3

Dependencies

179 objects

SELECT name FROM dba_dependencies

WHERE referenced_name = 'UTL_RAW'

UNION

SELECT referenced_name FROM dba_dependencies

WHERE name = 'UTL_RAW';

Exceptions

Error

#

Name

Description

VALUE_ERROR

ORA-6502

An arithmetic, conversion, truncation, or

size-constraint error. Usually raised by trying to cram a 6

character string into a VARCHAR2(5).

Required

Object Privileges

GRANT execute on UTL_RAW

GRANT execute ON utl_raw TO

UWCLASS;

BIT_AND

Perform

bitwise logical "and" of the values in raw r1 with raw r2 and

return the "anded" result raw

utl_raw.bit_and(r1 IN RAW, r2 IN RAW) RETURN

RAW;

SELECT utl_raw.bit_and('0102F3',

'F30201')

FROM dual;

BIT_COMPLEMENT

Perform

bitwise logical "complement" of the values in

raw and return the "complement'ed" result

raw

utl_raw.bit_complement(r IN RAW) RETURN

RAW;

SELECT utl_raw.bit_complement('0102F3')

FROM dual;

BIT_OR

Perform

bitwise logical "or" of the values in raw r1 with raw r2 and return

the "or'd" result raw

utl_raw.bit_or(r1 IN RAW, r2 IN RAW) RETURN

RAW;

SELECT utl_raw.bit_or('0102F3',

'F30201')

FROM dual;

BIT_XOR

Perform

bitwise logical "exclusive or" of the values in raw r1 with raw r2

and return the "xor'd" result raw

utl_raw.bit_xor(r1 IN RAW, r2 IN RAW) RETURN

RAW;

SELECT utl_raw.bit_xor('0102F3',

'F30201')

FROM dual;

CAST_FROM_BINARY_DOUBLE

Return the

RAW representation of a binary_double value

utl_raw.cast_from_binary_double(n IN

BINARY_DOUBLE,

endianess IN PLS_INTEGER DEFAULT 1) RETURN RAW;

SELECT utl_raw.cast_from_binary_double(123.45)

FROM dual;

CAST_FROM_BINARY_FLOAT

Return the

RAW representation of a binary_float value

utl_raw.cast_from_binary_float(n IN

BINARY_FLOAT,

endianess IN PLS_INTEGER DEFAULT 1) RETURN RAW;

SELECT utl_raw.cast_from_binary_float(123.45)

FROM dual;

CAST_FROM_BINARY_INTEGER

Return the

RAW representation of a binary_integer value

utl_raw.cast_from_binary_integer(

n IN BINARY_INTEGER,

endianess IN PLS_INTEGER DEFAULT 1) RETURN RAW;

SELECT utl_raw.cast_from_binary_integer(100)

FROM dual;

CAST_FROM_NUMBER

Returns the

binary representation of a NUMBER in RAW

utl_raw.cast_from_number(n IN NUMBER) RETURN

RAW;

SELECT utl_raw.cast_from_number(100)

FROM dual;

CAST_TO_BINARY_DOUBLE

Perform a

casting of the binary representation of the raw into a

binary_double.

cast_to_binary_double(

r IN RAW,

endianess IN PLS_INTEGER DEFAULT 1) RETURN

BINARY_DOUBLE;

SELECT utl_raw.cast_to_binary_double('405EDCCCCCCCCCCD')

FROM dual;

CAST_TO_BINARY_FLOAT

Perform a

casting of the binary representation of the raw into a

binary_float

utl_raw.cast_to_binary_float(

n IN BINARY_FLOAT,

endianess IN PLS_INTEGER DEFAULT 1) RETURN RAW;

SELECT utl_raw.cast_to_binary_float('42F6E666')

FROM dual;

CAST_TO_BINARY_INTEGER

Perform a

casting of the binary representation of the raw into a binary

integer

utl_raw.cast_to_binary_integer(

r IN RAW,

endianess IN PLS_INTEGER DEFAULT 1) RETURN

BINARY_INTEGER;

SELECT utl_raw.cast_to_binary_integer('00000064')

FROM dual;

CAST_TO_NUMBER

Perform a

casting of the binary representation of the number (in RAW) into a

NUMBER

utl_raw.cast_to_number(r IN RAW) RETURN

NUMBER;

SELECT utl_raw.cast_to_number('C202')

FROM dual;

CAST_TO_NVARCHAR2

Converts a RAW represented using

n data bytes into NVARCHAR2 with n data bytes

utl_raw.cast_to_nvarchar2(r IN RAW) RETURN

NVARCHAR2;

set serveroutput on

BEGIN

FOR i IN 100..200 LOOP

dbms_output.put_line(

utl_raw.cast_to_nvarchar2(TO_CHAR(i)));

END LOOP;

END;

/

CAST_TO_RAW

Converts a

VARCHAR2 represented using n data bytes into a RAW with n data

bytes

utl_raw.cast_to_raw(r IN RAW) RETURN

RAW;

SELECT utl_raw.cast_to_raw('ABC')

FROM dual;

CAST_TO_VARCHAR2

To extract a

substring from a BLOB using a PL/SQL program use dbms_lob.substr().

The problem is that it returns a string in hexadecimal characters.

CAST_TO_VARCHAR2 turns the hexadecimal string into readable ascii

format.

utl_raw.cast_to_nvarchar2(r IN RAW) RETURN

VARCHAR2;

set serveroutput on

BEGIN

FOR i IN 100..200 LOOP

dbms_output.put_line(utl_raw.cast_to_varchar2(TO_CHAR(i)));

END LOOP;

END;

/

COMPARE

Compares raw

r1 against raw r2. Returns 0 if r1 and r2 are identical, otherwise,

returns the position of the first byte from r1 that does not match

r2

utl_raw.compare(r1 IN RAW, r2 IN RAW,

pad IN RAW DEFAULT NULL) RETURN NUMBER;

SELECT utl_raw.compare(utl_raw.cast_to_raw('ABC'),

utl_raw.cast_to_raw('ACC'))

FROM dual;

CONCAT

Concatenate a set of 12 raws into

a single raw (up to 32K)

utl_raw.concat(r1 IN RAW DEFAULT NULL,

r2 IN RAW DEFAULT NULL,

r3 IN RAW DEFAULT NULL,

r4 IN RAW DEFAULT NULL,

r5 IN RAW DEFAULT NULL,

r6 IN RAW DEFAULT NULL,

r7 IN RAW DEFAULT NULL,

r8 IN RAW DEFAULT NULL,

r9 IN RAW DEFAULT NULL,

r10 IN RAW DEFAULT NULL,

r11 IN RAW DEFAULT NULL,

r12 IN RAW DEFAULT NULL) RETURN RAW;

SELECT utl_raw.concat('A','41','B','42')

FROM dual;

CONVERT

Convert raw from one character to

a different character set and return the resulting

raw

utl_raw.convert(

r IN RAW,

to_charset IN VARCHAR2,

from_charset IN VARCHAR2) RETURN RAW;

DECLARE

fr_charset CONSTANT VARCHAR2(30) :=

SUBSTR(SYS_CONTEXT('USERENV', 'LANGUAGE'),

INSTR(SYS_CONTEXT('USERENV', 'LANGUAGE'),'.')+1);

to_charset VARCHAR2(30) := 'TR8EBCDIC1026S';

rawvar RAW(100);

BEGIN

dbms_output.put_line(fr_charset);

dbms_output.put_line(to_charset);

rawvar := utl_raw.convert(UTL_RAW.CAST_TO_RAW('Morgan'),

'AMERICAN_AMERICA.'||to_charset,

'AMERICAN_AMERICA.'||fr_charset);

dbms_output.put_line(rawvar);

END;

/

COPIES

Return n

copies of r concatenated together

utl_raw.copies(r IN RAW, n IN NUMBER) RETURN

RAW;

SELECT utl_raw.copies('A', 6)

FROM dual;

LENGTH

Return the

length in bytes of a raw

utl_raw.length(r IN RAW) RETURN

NUMBER;

SELECT utl_raw.length('ABC')

FROM dual;

OVERLAY

Overlay the

specified portion of target raw with overlay raw, starting from

byte position pos of target and proceeding for len

bytes

utl_raw.overlay(overlay_str IN RAW, target IN

RAW,

pos IN BINARY_INTEGER DEFAULT 1,

len IN BINARY_INTEGER DEFAULT NULL,

pad IN RAW DEFAULT NULL) RETURN RAW;

SELECT utl_raw.overlay('1', 'AAABBBCCC',

4)

FROM dual;

REVERSE

Reverse a

byte sequence in raw r from end to end

utl_raw.reverse(r IN RAW) RETURN

RAW;

SELECT utl_raw.reverse('123')

FROM dual;

SUBSTR

Return a substring portion of raw

r beginning at pos for len bytes

utl_raw.substr(r IN RAW,

pos IN BINARY_INTEGER,

len IN BINARY_INTEGER DEFAULT NULL) RETURN RAW;

set serveroutput on

DECLARE

tmp VARCHAR2(250) := '';

vraw RAW(200) := utl_raw.cast_to_raw('ABCDEABCDEABCDE');

BEGIN

FOR i IN 1 .. 15 LOOP

tmp := tmp|| '0x' || utl_raw.substr(vraw, i, 1) || '

';

dbms_output.put_line(tmp);

END LOOP;

END;

/

TRANSLATE

Translate the bytes in the input

r raw according to the bytes in the translation raws, from_set and

to_set

utl_raw.translate(r IN RAW, from_set IN RAW,

to_set IN RAW)

RETURN RAW;

CREATE OR REPLACE FUNCTION

trans_demo(pin IN VARCHAR2)

RETURN VARCHAR2 IS

r_in RAW(2000);

r_out RAW(2000);

r_ul RAW(64);

r_lu RAW(64);

BEGIN

r_in := utl_raw.cast_to_raw(pin);

r_ul := utl_raw.cast_to_raw('ABCDEFabcdef');

r_lu := utl_raw.cast_to_raw('abcdefABCDEF');

r_out := utl_raw.translate(r_in , r_ul,

r_lu);

return(utl_raw.cast_to_varchar2(r_out));

END trans_demo;

/

SELECT trans_demo('FaDe') FROM dual;

SELECT trans_demo('FAde') FROM dual;

TRANSLITERATE

Transliterate the bytes in the

input r raw according to the bytes in the transliteration raws,

from_set and to_set

utl_raw.transliterate(r IN RAW, to_set IN RAW

DEFAULT NULL,

from_set IN RAW DEFAULT NULL, pad IN RAW DEFAULT NULL)

RETURN RAW;

CREATE OR REPLACE FUNCTION

tl_demo(pin IN VARCHAR2)

RETURN VARCHAR2 IS

r_in RAW(2000);

r_out RAW(2000);

r_up RAW(64);

r_lo RAW(64);

r_un RAW(64) := utl_raw.cast_to_raw('_');

BEGIN

r_in := utl_raw.cast_to_raw(pin);

r_up := utl_raw.cast_to_raw('ABCDEF. ');

r_lo := utl_raw.cast_to_raw('abcdef');

r_out := utl_raw.transliterate(r_in , r_lo,

r_up, r_un);

return(utl_raw.cast_to_varchar2(r_out));

END tl_demo;

/

SELECT tl_demo('AB C.D') FROM dual;

XRANGE

Returns a raw containing all

valid 1-byte encodings in succession beginning with the value

start_byte and ending with the value end_byte.

utl_raw.xrange(start_byte IN RAW DEFAULT

NULL,

end_byte IN RAW DEFAULT NULL) RETURN RAW;

SELECT utl_raw.xrange(utl_raw.cast_to_raw('A'),

utl_raw.cast_to_raw('Z'))

FROM dual;

SELECT utl_raw.xrange(utl_raw.cast_to_raw('0A'),

utl_raw.cast_to_raw('Z'))

FROM dual;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值