DECLARE
  V_ARR_PRDCT_CD type_array := type_array();
  V_COUNT        NUMBER := 0;
  v_sql VARCHAR2(2000);
BEGIN
  FOR I IN 1 .. 4 LOOP
    V_ARR_PRDCT_CD.extend;
    V_ARR_PRDCT_CD(I) := ''||I;
  END LOOP;
  DBMS_OUTPUT.PUT_LINE(V_ARR_PRDCT_CD.COUNT);
  --SELECT COUNT(COLUMN_VALUE) INTO V_COUNT FROM TABLE(V_ARR_PRDCT_CD);
  v_sql := ' SELECT COUNT(COLUMN_VALUE) FROM '||TABLE(V_ARR_PRDCT_CD);
  EXECUTE IMMEDIATE v_sql INTO v_count;
  DBMS_OUTPUT.PUT_LINE(V_COUNT);
END;

解决方案 »

  1.   

    declare s varchar2(2);
    s := to_char(I);
    ...
    V_ARR_PRDCT_CD(I) := ''+s;
      

  2.   


    DECLARE
      V_ARR_PRDCT_CD TYPE_ARRAY := TYPE_ARRAY();
      V_COUNT        NUMBER := 0;
      --V_SQL          VARCHAR2(2000);
    BEGIN
      FOR I IN 1 .. 4 LOOP
        V_ARR_PRDCT_CD.EXTEND;
        V_ARR_PRDCT_CD(I) := '' || I;
      END LOOP;
      DBMS_OUTPUT.PUT_LINE(V_ARR_PRDCT_CD.COUNT);
      --SELECT COUNT(COLUMN_VALUE) INTO V_COUNT FROM TABLE(V_ARR_PRDCT_CD);
      --V_SQL := ' SELECT COUNT(COLUMN_VALUE) FROM ' || TABLE(V_ARR_PRDCT_CD);
      --EXECUTE IMMEDIATE V_SQL
        --INTO V_COUNT;
      V_COUNT := V_ARR_PRDCT_CD.COUNT;
      DBMS_OUTPUT.PUT_LINE(V_COUNT);
    END;
      

  3.   

    DECLARE
      V_ARR_PRDCT_CD TYPE_ARRAY := TYPE_ARRAY();
      V_COUNT        NUMBER := 0;
      --V_SQL          VARCHAR2(2000);
    BEGIN
      FOR I IN 1 .. 4 LOOP
        V_ARR_PRDCT_CD.EXTEND;
        V_ARR_PRDCT_CD(I) := '' || I;
      END LOOP;
      DBMS_OUTPUT.PUT_LINE(V_ARR_PRDCT_CD.COUNT);
      --SELECT COUNT(COLUMN_VALUE) INTO V_COUNT FROM TABLE(V_ARR_PRDCT_CD);
      --V_SQL := ' SELECT COUNT(COLUMN_VALUE) FROM ' || TABLE(V_ARR_PRDCT_CD);
      --EXECUTE IMMEDIATE V_SQL
        --INTO V_COUNT;
      V_COUNT := V_ARR_PRDCT_CD.COUNT;
      DBMS_OUTPUT.PUT_LINE(V_COUNT);
    END;
      

  4.   


    v_sql := ' SELECT COUNT(COLUMN_VALUE) FROM '||TABLE(V_ARR_PRDCT_CD);
      EXECUTE IMMEDIATE v_sql INTO v_count;我想执行这条语句