欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle二進制如何 oracle轉(zhuǎn)二進制函數(shù)

如何將二進制文件存入Oracle數(shù)據(jù)庫中

先把文件讀取到內(nèi)存,再以二進制格式保持到數(shù)據(jù)庫中的大字段中(clob或clob)。

雜多網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站從2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站

寫大對象。

Java code

public static void main(String[] args) {

// TODO Auto-generated method stub

Connection conn = null;

Statement stat = null;

ResultSet rs = null;

OutputStream os = null;

FileInputStream fis = null;

int bs = 0;

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oraDB","bigfou","---");

conn.setAutoCommit(false);

stat = conn.createStatement();

stat.executeUpdate("insert into t_video(id,video) values(1,empty_blob())");

rs = stat.executeQuery("select video from t_video where id = 1");

rs.next();

oracle.sql.BLOB blo = (oracle.sql.BLOB)rs.getBlob(1);

os = blo.getBinaryOutputStream();

bs = blo.getBufferSize();

fis = new FileInputStream("D:\\Temp\\MPlayer-CVS-20040808-KK\\mplayer.exe");

byte[] buf = new byte[bs];

int length = 0;

while(true)

{

length = fis.read(buf);

if(length == -1) break;

os.write(buf,0,length);

}

os.close();

os = null;

fis.close();

fis = null;

conn.commit();

conn.setAutoCommit(true);

conn.close();

} catch(Exception ex) {

ex.printStackTrace();

}

}

讀大對象

Java code

InputStream is = null;

FileOutputStream fos = null;

byte[] buf = null;

int bs = 0;

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oraDB","bigfou","-");

conn.setAutoCommit(false);

stat = conn.createStatement();

rs = stat.executeQuery("select video from t_video where id = 1");

rs.next();

oracle.sql.BLOB blo = (oracle.sql.BLOB)rs.getBlob(1);

bs = blo.getBufferSize();

buf = new byte[bs];

int length = 0;

is = blo.getBinaryStream();

fos = new FileOutputStream("d:\\test.exe");

while(true) {

length = is.read(buf);

if(length == -1) break;

fos.write(buf,0,length);

}

fos.close();

fos = null;

is.close();

is = null;

conn.commit();

conn.setAutoCommit(true);

conn.close();

...

Oracle中進制表示法

用to_char就可以把十進制轉(zhuǎn)成十六進制:

select to_char(31, '0x') from dual;

結(jié)果:1f

1.將十進制的數(shù)轉(zhuǎn)換為十六進制的數(shù)請使用to_char函數(shù)。

數(shù)據(jù)庫中16進制的表達是按照字符串來描述的,所以將十進制的數(shù)轉(zhuǎn)換為十六進制的數(shù)使用to_char函數(shù)

BYS@bys1select to_char(10,'xxx'), to_char(42,'xxx') from dual;

TO_C TO_C

---- ----

a 2a

2.將十六進制的數(shù)轉(zhuǎn)換為十進制的數(shù)請使用to_number函數(shù)。

如下,16進制A是10.2A是2*16+A=42.注意xxx,如果轉(zhuǎn)換的數(shù)比較大,要多寫幾個,避免位數(shù)不足而報錯。

BYS@bys1select to_number('a','xxx'), to_number('2a','xxx') from dual;

TO_NUMBER('A','XXX') TO_NUMBER('2A','XXX')

-------------------- ---------------------

10 42

####################################################

ORACLE未提供二進制與十進制互轉(zhuǎn)的函數(shù),可以自己創(chuàng)建。以下十進制與二進制轉(zhuǎn)換腳本引自惜紛飛博客,感謝!

3.十進制轉(zhuǎn)換二進制--使用自定義函數(shù)

CREATE OR REPLACE FUNCTION NUMBER_TO_BIT(V_NUM NUMBER)

RETURN VARCHAR IS V_RTN VARCHAR(8);--注意返回列長度

V_N1 NUMBER;

V_N2 NUMBER;

BEGIN

V_N1 := V_NUM;

LOOP

V_N2 := MOD(V_N1, 2);

V_N1 := ABS(TRUNC(V_N1 / 2));

V_RTN := TO_CHAR(V_N2) || V_RTN;

EXIT WHEN V_N1 = 0;

END LOOP;

--返回二進制長度

SELECT lpad(V_RTN,8,0)

INTO V_RTN

FROM dual;

return V_RTN;

end;

BYS@bys1col a255 for a20

BYS@bys1col a1 for a20

BYS@bys1select number_to_bit(255) as a255,number_to_bit(1) as a1 from dual;

A255 A1

-------------------- --------------------

11111111 00000001

4.二進制轉(zhuǎn)換十進制--使用自定義函數(shù)

CREATE OR REPLACE FUNCTION BIT_TO_NUMBER(P_BIN IN VARCHAR2) RETURN NUMBER AS

V_SQL VARCHAR2(30000) := 'SELECT BIN_TO_NUM(';

V_RETURN NUMBER;

BEGIN

IF LENGTH(P_BIN) = 256 THEN

RAISE_APPLICATION_ERROR(-20001, 'INPUT BIN TOO LONG!');

END IF;

IF LTRIM(P_BIN, '01') IS NOT NULL THEN

RAISE_APPLICATION_ERROR(-20002, 'INPUT STR IS NOT VALID BIN VALUE!');

END IF;

FOR I IN 1 .. LENGTH(P_BIN) LOOP

V_SQL := V_SQL || SUBSTR(P_BIN, I, 1) || ',';

END LOOP;

V_SQL := RTRIM(V_SQL, ',') || ') FROM DUAL';

EXECUTE IMMEDIATE V_SQL

INTO V_RETURN;

RETURN V_RETURN;

END;

BYS@bys1select bit_to_number('11111111') from dual;

BIT_TO_NUMBER('11111111')

-------------------------

255

怎么將oracle數(shù)據(jù)庫存的二進制轉(zhuǎn)換十進制

--十進制轉(zhuǎn)其他進制函數(shù)

create or replace function to_base( p_dec in number, p_base in number )

return varchar2

is

l_str varchar2(255) default NULL;

l_num number default p_dec;

l_hex varchar2(16) default '0123456789ABCDEF';

begin

if ( trunc(p_dec) p_dec OR p_dec 0 ) then

raise PROGRAM_ERROR;

end if;

loop

l_str := substr( l_hex, mod(l_num,p_base)+1, 1 ) || l_str;

l_num := trunc( l_num/p_base );

exit when ( l_num = 0 );

end loop;

return l_str;

end to_base;

--其他進制轉(zhuǎn)十進制

create or replace function to_dec ( p_str in varchar2, p_from_base in number default 16 )

return number

is

l_num number default 0;

l_hex varchar2(16) default '0123456789ABCDEF';

begin

for i in 1 .. length(p_str) loop

l_num := l_num * p_from_base + instr(l_hex,upper(substr(p_str,i,1)))-1;

end loop;

return l_num;

end to_dec;

新聞名稱:oracle二進制如何 oracle轉(zhuǎn)二進制函數(shù)
當(dāng)前網(wǎng)址:http://chinadenli.net/article24/hipcje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)做網(wǎng)站網(wǎng)站維護Google用戶體驗品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)