oracle怎么插入blob,插入blob的sql语句怎么写,简单点有个学生表Student(num,name,address,photo),前三项都容易插入数据,第四项是图片,将字段类型定义为blob,那图片怎么插入到数据库?求高手指导,最好能写个sql代码,谢谢!

解决方案 »

  1.   

    大致思路都是都有四个步骤:
    1、先插入其它字段,BLOB字段初始化的时候,先初始化一个EMPTY_BLOB(),相当于一个BLOB对象的空壳,内部啥也没有,但是是一个对象。2、SELECT <BLOB字段> FROM <表名称> WHERE <关键字>=<插入关键值> FOR UPDATE;--FOR UPDATE是必须的。3、如果在程序中就直接得到一个BLOB对象的引用(相当于指针),如果过程中,上述修改为SELECT INTO到一个BLOB类型的变量中,其实也是BLOB对象的指针,然后对这个BLOB进行编辑,过程中对其进行编辑使用DBMS_LOB包来完成编辑工作,程序中将前端提交的内容(可能是图片或者上传文件直接可以转为byte[]数组、可能是文本字符串需要根据相应字符集转义为byte[]数组),通过java.sql.Blob接口对应的驱动实现类内部的setBytes(....)方法来完成写入。4、不论是程序还是过程,使用UPDATE <表名称> WHERE <关键字>=<插入关键值>; COMMIT;即可完成编辑过程。
      

  2.   

    l_file          UTL_FILE.file_type;
        l_blob_data     BLOB;
        l_bfile_data    BFILE;
        ln_data_size    INTEGER;-------------------------------------
    先插入一条值:insert into T010_TEMPFILE
    然后更新成空文件:update T010_TEMPFILE
                   set SPACE_AREA = empty_blob() where  
                    returning SPACE_AREA into l_blob_data
    然后做成BFILE文件:
    l_bfile_data:=BFILENAME(lv_edi_directory,lv_sjis_name);
                dbms_lob.fileopen(l_bfile_data,dbms_lob.file_readonly);
                ln_data_size:=dbms_lob.getlength(l_bfile_data);最后从BFILE登录成blob:dbms_lob.loadfromfile(l_blob_data,l_bfile_data,ln_data_size);
                dbms_lob.fileclose(l_bfile_data);
      

  3.   

    lv_edi_directory 是创建号的DIRECTORY名,是oracle服务器上自己创建的文件夹,用来存储上传文件。
    select DIRECTORY_PATH
          from SYS.ALL_DIRECTORIES
         where DIRECTORY_NAME = lv_edi_directory 可以查询到
      

  4.   

    oracle插入blob这么复杂,mysql处理blob很方便的,load_file(),直接写到values就行,有没有简单的方法。或者帮我写一条上面提到的Student表插入sql语句,我容易看懂,先谢谢楼上两位
      

  5.   

    用带参数的SQL语句来实现
    insert into Student(num,name,address,photo)
     values (:v_num,:v_name,:v_address,:v_photo)
    oracleparameter