先将CREATE_PROC_STR打印出来,然后放在sqlplus中执行,看是什么错
set serveroutput on;
用dbms_output.put_line(CREATE_PROC_STR);

解决方案 »

  1.   

    试试这样:
    create or replace procedure CREATE_VALUE_CONSTRAINT 
    AS
      v_maxvalue number;
      v_minvalue number;
    BEGIN
        ......    BEGIN
              v_maxvalue := TO_NUMBER(TRIM(MAXVALUE));
              v_minvalue := TO_NUMBER(TRIM(MINVALUE));
        EXCEPTION
              WHEN OTHERS THEN
                  dbms_output.put_line('数据输入非法!');
        END ;
               CREATE_PROC_STR:='CREATE OR REPLACE PROCEDURE PEDIS20ADMIN.'||PROC_NAME2||'('||PARAMETER_NAME||' IN VARCHAR2)'||' AS '
               ||CHR(13)||'BEGIN'||CHR(13)||' IF '||PARAMETER_NAME||'>'||'TO_NUMBER('''||MINVALUE||''') OR '||PARAMETER_NAME||'>'||'TO_NUMBER('''||MAXVALUE||''') THEN '||
               CHR(13)||' DBMS_OUTPUT.PUT_LINE(''字段'||PARAMETER_NAME||'的值不在'||MINVALUE||'和'||MAXVALUE||'之间!'');'
               ||CHR(13)||' END IF;'||CHR(13)||'END;';
                 
               EXECUTE IMMEDIATE CREATE_PROC_STR;
        ......
    END CREATE_VALUE_CONSTRAINT ;
      

  2.   

    最好是用v_maxvalue ,v_minvalue 代替你下面语句中的TO_NUMBER(MAXVALUE)和TO_NUMBER(MINVALUE)
      

  3.   

    最好是用v_maxvalue ,v_minvalue 代替你下面语句中的TO_NUMBER(MAXVALUE)和TO_NUMBER(MINVALUE)
    -------------------------------------------------------
    没用,虽然v_maxvalue,v_minvalue是数字
    但是在合并字符串的时候又把它们变成字符了
    我以前就是这样做的