Plsql 请告诉我为什么程序没有执行:下面给出了错误代码

Plsql 请告诉我为什么程序没有执行:下面给出了错误代码,plsql,oracle10g,oracle-sqldeveloper,Plsql,Oracle10g,Oracle Sqldeveloper,在这里,我试图创建.csv文件,以显示两个字段的数据从视图,请其需要充分如何创建csv文件 CREATE OR replace PROCEDURE "SP_APPLICANT_AREA_COUNT_REPORT" ( p_partner_id NUMBER := 999, p_user_session_id VARCHAR2 := NULL, p_file_path IN OUT VARCHAR2) AS -- NOCOPY --v_USERID NUMBER :

在这里,我试图创建.csv文件,以显示两个字段的数据从视图,请其需要充分如何创建csv文件

CREATE OR replace PROCEDURE "SP_APPLICANT_AREA_COUNT_REPORT" (
p_partner_id      NUMBER := 999,
p_user_session_id VARCHAR2 := NULL,
p_file_path       IN OUT VARCHAR2)
AS
  -- NOCOPY
  --v_USERID  NUMBER :=P_USER_ID;
  --v_TABLE_NAME  VARCHAR2(200):=P_TABLE_NAME;
  --v_PARTNER_ID NUMBER:=P_PARTNER_ID;    
  v_file             utl_file.file_type;
  cur_field          SYS_REFCURSOR;
  v_fields           VARCHAR2(32767) := NULL;
  v_field            VARCHAR2(32767);
  v_count            NUMBER := 0;
  v_curfields        VARCHAR2(32767);
  v_curfilefields    VARCHAR2(32767);
  v_tempfields       VARCHAR2(32767);
  v_tempfieldsvalues VARCHAR2(32767);
  v_counter          NUMBER := 1;
  v_str              VARCHAR2(32767);
  v_strheader        VARCHAR2(32767);
  v_curcounter       NUMBER := 1;
  v_filecount        NUMBER := 1;
  v_name             VARCHAR2(500) := 'clob2file_buffered1.csv';
  c_maxline CONSTANT PLS_INTEGER := 32767;
  v_eligible_number  NUMBER := -999;
  v_count1           NUMBER := 0;
  cur_rec            SYS_REFCURSOR;
  v_file_max_limit   NUMBER := 25001;
  v_search_criteria1 VARCHAR2(4000) := NULL;
  v_search_criteria2 VARCHAR2(4000) := NULL;
  v_csvfilename      VARCHAR2(4000);
  v_ac_name          VARCHAR2(30) := 'bid_reason';
  v_rp_name          VARCHAR2(30) := 'Reason of Bid';
  v_str_l            VARCHAR2(200) := '';
  v_area_description VARCHAR2(500) := NULL;
  v_applicant_count  NUMBER := 0;
BEGIN
    IF ( p_user_session_id IS NOT NULL ) THEN
      SELECT 'ApplicantCountReport'
             ||'_'
             ||p_user_session_id
             ||'_'
             ||To_char(SYSDATE, 'ddmmyyhhmissss')
      INTO   v_csvfilename
      FROM   dual;
    ELSE
      SELECT 'ApplicantCountReport'
             ||To_char(SYSDATE, 'ddmmyyhhmissss')
      INTO   v_csvfilename
      FROM   dual;
    END IF;

    SELECT area_description
    --INTO v_AREA_DESCRIPTION
    FROM   applicant_area_count_view
    WHERE  partner_id = p_partner_id;

    SELECT applicant_count
    INTO   v_applicant_count
    FROM   applicant_area_count_view
    WHERE  partner_id = p_partner_id;

    /* select AREA_DESCRIPTION,APPLICANT_COUNT
      INTO v_AREA_DESCRIPTION,v_APPLICANT_COUNT
      from APPLICANT_AREA_COUNT_VIEW
      where PARTNER_ID=P_PARTNER_ID;

    */
    BEGIN
        /*
        v_name:=substr(v_name,0,length(v_name)-6)||'_'||TO_CHAR(v_fileCount)||'.csv';
        */
        v_name := v_csvfilename
                  ||'_'
                  ||To_char(SYSDATE, 'YYYYMMDD')
                  ||'.csv';

        v_file := utl_file.Fopen(location => 'CBLDOC_DIR', filename => v_name,
                  open_mode => 'w',
                            max_linesize => c_maxline);

        utl_file.Put_line(v_file, v_name);

        p_file_path := p_file_path
                       ||v_name
                       ||',';
    EXCEPTION
        WHEN OTHERS THEN
          utl_file.Fclose(v_file);
    END;

    dbms_output.Put_line(v_name);
EXCEPTION
  WHEN OTHERS THEN
             RAISE;
--raise_application_error (-20002,'An error has occurred.'); 
--raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
END; 


ERROR: ERROR:- ORA-01403: no data found
ORA-06512: at "CBLLIVE21092011_DEV.SP_APPLICANT_AREA_COUNT_REPORT", line 108
ORA-06512: at line 10
Process exited.
ORA-01403出错:找不到数据,因为您正在代码中执行隐式游标,即选择。。。进入而不是游标cur是select…,如果没有返回任何行,则会出现该错误。因此,您必须传入一个不存在的partner_id,从而导致选择失败


通常,在使用隐式游标时,应确保处理两种异常情况:未找到数据和行太多。在某些情况下,您可能不需要处理太多行异常—例如,如果您在主键上进行选择,则永远不会返回多行。

因为您的一条select语句没有找到数据?当其他人正在隐藏错误发生的实际行时,您正在捕获错误,这在您调试时非常没有帮助。如果这是当前代码,则可能是来自申请人\区域\计数\视图的查询;注释掉的into子句表明它不是。ORA-01403:未找到任何数据ORA-06512:在CBLLIV21092011_DEV.SP_申请人_AREA_COUNT_REPORT,第108行解释了这一点。感谢大家,问题已经解决,再次感谢大家的支持。