create or replace procedure p1(a int,b varchar2) is
begin
insert into tb values(a,b);
commit;
end p1;
/SQL817> create table tb (a int,b clob);表已创建。SQL817> create or replace procedure p1(a int,b varchar2) is
  2  begin
  3  insert into tb values(a,b);
  4  commit;
  5  end p1;
  6  /过程已创建。
SQL817> begin
  2  p1(1,'abc');
  3  p1(2,'123');
  4  end;
  5  /PL/SQL 过程已成功完成。SQL817> select * from tb;         A
----------
B
--------------------------------
         1
abc         2
123

解决方案 »

  1.   

    上面表中的b 是clob,如果是blob也一样操作
      

  2.   

    字符串到blob字段?
    类型不大匹配吧?
    BLOB:大二进制对象
    CLOB:大文本对象
      

  3.   

    SQL817> create table tb(a int,b blob);表已创建。SQL817> begin
      2  p1(1,'abc');
      3  p1(2,'bcd');
      4  end;
      5  /PL/SQL 过程已成功完成。SQL817> 不是可以的吗
      

  4.   

    我刚学会数据表定义如下
    CREATE TABLE ZDS.VIEW_SITES_INFO
    (
        SITE_ID                        NUMBER(3,0) NOT NULL,
        AUDIO                          BLOB DEFAULT empty_blob()
    )
    /
    存储过程定义如下CREATE OR REPLACE PROCEDURE
    /***************************************************************************************************
    *
    *   过程名
    *
    * ZDS.BLOBINSERT
    *
    *   概要说明
    *
    *       插入二进制大型对象。
    *
    *   参数
    *       <IN>
    *         aviID           编号
    *         aviBLOB         二进制数据
    *       <OUT>
    *
    *   涉及表
    *
    *       view_sites_info      : U         blob测试表
    *
    ***************************************************************************************************/
    BLOBINSERT(aviID in view_sites_info.site_id%type,
            aviBLOB in RAW)
    AS
    blob_loc BLOB;
    tot_len INTEGER;
    numof   INTEGER;BEGIN        INSERT INTO view_sites_info VALUES(aviID,EMPTY_BLOB()); SELECT AUDIO INTO blob_loc -- 获取定位器并锁定行
    FROM view_sites_info
    WHERE site_id = aviID FOR UPDATE; numof:=utl_raw.length(aviBLOB); dbms_lob.write(blob_loc,numof,1,aviBLOB);

    tot_len :=DBMS_LOB.GETLENGTH(blob_loc);
    DBMS_OUTPUT.PUT_LINE('The length of the BLOB after population is:'||TO_CHAR(tot_len));
    DBMS_OUTPUT.PUT_LINE('The length of the RAW is:'||TO_CHAR(numof)); COMMIT;
    END;