dbms_output.write的问题
有一个例子,我不清楚,请大家帮小弟解惑一下如下:
select id,name,description from downfilelist;
ID          NAME                              DESCRIPTION
10001   oracle plsql编程指南     这是一本oracle的好书其中ID和NAME都是varchar类型,description是CLOB类型。接下来
declare
          tempdesc  CLOB;
      icoun  int;
      istart  int;
      snewvar  varchar(30);
begin
        icount:=10;
     istart:=5;
     snewvar:=‘这本书是今年的畅销书‘;
     select description into tempdesc from downfilelist
                   where id='10001' for update;     疑问就在这,是不是tempdesc这时候已经和ID为10001的description字段绷定在一起了?
        dbms_output.put_line('更改前: '||tempdesc);
        dbms_output.put_line('从'||istart||'开始的'||icount||'个字符被改写成'||snewvar);
         dbms_output.write(tempdesc,icount,istart,snewvar);--我不清楚的是,这改写的是变量,怎么表里面的数据也改写了?
        commit;
end;
/更改前:这是一本oracle的好书
从5开始的10个字符被改写成:这本书是今年的畅销书
pl/sql过程已成功完成结果为:
select id,name,description from downfilelist;
ID          NAME                              DESCRIPTION
10001   oracle plsql编程指南     这是一本这本书是今年的畅销书

解决方案 »

  1.   

    dbms_output有write这个过程吗?自定义的?
      

  2.   

    你desc dbms_output 一下 看看  我没有看到  write 函数 或是 存储过程
      

  3.   

    有的,和dbms_output.put_line()类似的
      

  4.   


    write是包dbms_output中一个函数
      

  5.   

    c:\>desc dbms_output
    PROCEDURE DISABLE
    PROCEDURE ENABLE
    参数名称                       类型                    输入/输出默认值?
    ------------------------------ ----------------------- ------ --------
     BUFFER_SIZE                    NUMBER(38)              IN     DEFAULT
    PROCEDURE GET_LINE
    参数名称                       类型                    输入/输出默认值?
    ------------------------------ ----------------------- ------ --------
     LINE                           VARCHAR2                OUT
     STATUS                         NUMBER(38)              OUT
    PROCEDURE GET_LINES
    参数名称                       类型                    输入/输出默认值?
    ------------------------------ ----------------------- ------ --------
     LINES                          TABLE OF VARCHAR2(255)  OUT
     NUMLINES                       NUMBER(38)              IN/OUT
    PROCEDURE NEW_LINE
    PROCEDURE PUT
    参数名称                       类型                    输入/输出默认值?
    ------------------------------ ----------------------- ------ --------
     A                              VARCHAR2                IN
    PROCEDURE PUT
    参数名称                       类型                    输入/输出默认值?
    ------------------------------ ----------------------- ------ --------
     A                              NUMBER                  IN
    PROCEDURE PUT_LINE
    参数名称                       类型                    输入/输出默认值?
    ------------------------------ ----------------------- ------ --------
     A                              VARCHAR2                IN
    PROCEDURE PUT_LINE
    参数名称                       类型                    输入/输出默认值?
    ------------------------------ ----------------------- ------ --------
     A                              NUMBER                  IN
      

  6.   

    这是我看的一个视频上的例子,有dbms_output.write 这个过程,还有dbms_output.read 这个过程,都有的