google地圖是基於oracle查詢的,那麼,google是如何把地圖儲存到oracle裡面的呢?
這裡我們藉助dbms_lob包來簡單瞭解一下流程。
1)建立一個t表:
00:32:04 hr@ORCL (^ω^) create table t (a varchar2(20),b blob);表已建立。
2)寫一個預存程序:
CREATE OR REPLACE PROCEDURE think (p_1 VARCHAR2, p_2 VARCHAR2 , p_3 varchar2 ) AS v_f BFILE; v_b blob;BEGIN INSERT INTO t values( p_1, EMPTY_BLOB () ) RETURN b into v_b; v_f := BFILENAME (p_2,p_3); DBMS_LOB.FILEOPEN (v_f, DBMS_LOB.FILE_READONLY); DBMS_LOB.LOADFROMFILE (v_b, v_f, DBMS_LOB.GETLENGTH (v_f)); DBMS_LOB.FILECLOSE (v_f); commit; end;
此處記得檢查一下我們的過程是否有誤:select * from user_errors
3)sys使用者建立directory對象並授權:
00:44:12 sys@ORCL (^ω^) create directory dir as 'C:\Users\Administrator\';目錄已建立。00:45:21 sys@ORCL (^ω^) grant all on directory dir to hr;
4)執行預存程序
begin think( 'This is my pic 1', 'DIR', 'psu.jpg' ); end;
5)查詢(基於pl/sql查詢)
select * from t
查詢效果如下:
當然了,google不可能用pl/sql來展現它的圖片。可能是java開發的app,也可能是其他。