两个表A,B表,想写个存储过程,根据A表中的字段ID去B表找到该ID对应的BLOB字段,并将它转存到A表中,该存储过程怎么写,在java中怎么去调用

解决方案 »

  1.   

    数据库是哪种,SQLServer还是Oracle
      

  2.   

    只能提供 一些思路,
    如果,你不会SQL的还是好好学习一下.不熟悉JAVA的,还是先去学习有关JAVA存储过程的例子吧.
      

  3.   

    根据A表中的字段ID去B表找到该ID对应的BLOB字段
    select BLOB FROM B
    WHERE ID=(SELECT ID FROM A WHERE ID=...........)
      

  4.   

    楼上的就是一般的sql语句撒  没有上面特别的啊
     楼主不是要存储过程的吗 虽然自己对存储过程不是很了解 但是也知道上面的不是一个存储过程的啊
      

  5.   

    CREATE OR REPLACE PROCEDURE eygle_dump_blob   (id   varchar2)
    IS    
                  l_buffer         RAW(32767);   
                  l_amount         BINARY_INTEGER   :=   32767;   
                  l_blob             BLOB;   
                    l_blob1             BLOB;   
                   l_blob_len     INTEGER;   
              BEGIN   
                   SELECT FJ INTO  l_blob FROM   A WHERE serial_no= id;--取出blob
                  l_blob_len   :=   DBMS_LOB.GETLENGTH(l_blob);   --得到长度
                      select fj into  l_blob1 from B  where tsbzj=id for update;--得到B表该blob的写锁
                   
              这里怎么将取出来的blob写进去啊,我就这里没写过,不知道怎么写       COMMIT;       
            END eygle_dump_blob;     
      

  6.   

    CREATE OR REPLACE PROCEDURE eygle_dump_blob   (id   varchar2)
    IS     
                  l_blob         BLOB;   
                  l_blob1        BLOB;    
                  vId   integer;   
       
              BEGIN   
                  vId := 0;
                select count(serial_no) into vId from A where  serial_no= id;   
              if   (vId!=0 and vId is not null)   then   --如果A表中存在相应的记录
                  SELECT FJ INTO  l_blob FROM   MT_APPEAL_RECORD WHERE serial_no= id;--从A表中取出BLOB
                  update B set fj=empty_blob() where tsbzj=id;--更新B使FJ字段为一个空BLOB
                   select fj into  l_blob1 from B  where tsbzj=id for update;--得到B表FJ写锁
              DBMS_LOB.OPEN(l_blob,dbms_lob.lob_readonly);--打开l_blob,为只读状态
    DBMS_LOB.OPEN(l_blob1,dbms_lob.lob_readwrite);--打开l_blob1,为可写状态
    DBMS_LOB.append(l_blob1,l_blob);--将l_blob存到l_blob1中
    DBMS_LOB.close(l_blob); --关闭l_blob
    DBMS_LOB.close(l_blob1); --关闭l_blob1
             end if;
           COMMIT;       
            END eygle_dump_blob;