我在SQL*Plus WorkSheet调试一个存储过程,其中有字符串变量m_Sqls;它根据条件组合了一些字符,
执行完以后,只提示我"PL/SQL过程成功完成"。但我怎么能看到m_Sqls这个变量的结果呢?

解决方案 »

  1.   

    set serveroutput on
    declare
      VARNAME varchar2(255);
    begin
      PROCNAME(...);
      dbms_output.put_line(VARNAME);
    end;
    /
      

  2.   

    或者用sql plus的var来定义变量,再用sql plus的print输出变量。
    var v varchar2(200)
    exec PROCNAME(..., :v);
    print v
      

  3.   

    不行呀。我的代码如下:
    DECLARE
    SSNO_1_ VARCHAR2(200) :='1,2,3,4,5';
    sqls VARCHAR2(1500);
    str VARCHAR2(1000);
    i NUMBER(10,0);BEGIN
       
         sqls :='SELECT SC_ID,SS_NO,SU_NO,SO_NO,SA_NO,ALARM_ID,ALARM_TIME,ALARM_DURATION,ALARM_LEVEL,CONFIRM_TIME,USERID,ALARM_RECOVERY FROM SA.ALARM_RECOVERY_RECORD WHERE Alarm_Time>=INSERTALARM_RECORD_FOR_R_TEST.StartTime_1 
                and Alarm_Time<=INSERTALARM_RECORD_FOR_R_TEST.EndTime_1 and ALARM_DURATION>=INSERTALARM_RECORD_FOR_R_TEST.Duration_ and'; 
         str :='';
         i :=1;
         LOOP
           IF((INSTR(SSNO_1_,',',i,1)) != 0) THEN
              IF(i=1) THEN
                  str:=str || 'SS_NO=''' || SUBSTR(SSNO_1_,i,(INSTR(SSNO_1_,',',i,1)-i)) || '''';
                  i:=(INSTR(SSNO_1_,',',i,1)+1);
              ELSE
                  str:=str || ' or SS_NO=''' || SUBSTR(SSNO_1_,i,(INSTR(SSNO_1_,',',i,1)-i)) || '''';         
                  i:=(INSTR(SSNO_1_,',',i,1)+1);
              END IF;
              --INSERT INTO zc.tmp(v_field_id) VALUES(i);
           ELSE 
              str:=str || ' or SS_NO=''' || SUBSTR(SSNO_1_,i) || ''')';
              --INSERT INTO zc.tmp(v_field_id) VALUES(i);
           EXIT;
           END IF;
         END LOOP;
              
         sqls := sqls || str || ';';
         
        DBMS_OUTPUT.PUT_LINE(sqls);
        
    END;
    在WorkSheet下方出现错误:DECLARE
    *
    ERROR 位于第 1 行:
    ORA-20000: ORU-10028: line length overflow, limit of 255 chars per line
    ORA-06512: 在"SYS.DBMS_OUTPUT", line 35
    ORA-06512: 在"SYS.DBMS_OUTPUT", line 133
    ORA-06512: 在line 32
      

  4.   

    在Sql worksheet 中第一楼  bobfang(匆匆过客) 是个好法子
    在过程、触发器中第二楼  henghowzc(等待) 是个好法子。第三楼的 Print 能好使吗?