比方我有个表A(A,B,C), 字符串 '1|2|3'规则的。我想把取出然后放入A表:使A表中生成1 2 3 数据:我写了一段过程,编译时候有误,因为我对pl/sql表不是很了解,也许方法不是很对:
CREATE OR REPLACE PACKAGE PKC_UTL_TEST IS  -- Author  : ADMINISTRATOR
  -- Created : 2011-12-6 16:10:26
  -- Purpose :   TYPE TYP_TAB_A IS TABLE OF A%ROWTYPE INDEX BY BINARY_INTEGER;  PROCEDURE PRC_GET_A(TEXT        IN VARCHAR2,
                         PRM_APPCODE OUT NUMBER,
                         PRM_ERRMSG  OUT VARCHAR2);END PKC_UTL_TEST;CREATE OR REPLACE PACKAGE BODY PKC_UTL_TEST IS  PROCEDURE PRC_GET_A(TEXT        IN VARCHAR2,
                         PRM_APPCODE OUT NUMBER,
                         PRM_ERRMSG  OUT VARCHAR2) IS
    TAB_A TYP_TAB_A;
    V_TEXT   VARCHAR2(1000); --测试
    TEMP_STR VARCHAR2(30) := '';
    V_SPLIT  VARCHAR(5) := '|';
    INDEXS   INTEGER;
    v_count NUMBER(3);
    CURSOR cur_a_column IS
           SELECT column_name FROM SYS.USER_TAB_COLUMNS
    WHERE 1 = 1
      AND TABLE_NAME = 'A';
      
    v_sql VARCHAR2(100);
    v_a VARCHAR2(20); 
    v_i NUMBER(1); 
  BEGIN
    --查询表中有多少字段
   BEGIN
   SELECT COUNT(1)
     INTO V_COUNT
     FROM SYS.USER_TAB_COLUMNS
    WHERE 1 = 1
      AND TABLE_NAME = 'A';
   EXCEPTION WHEN OTHERS
     THEN
       PRM_APPCODE := -1;
       PRM_ERRMSG := TRIM(Sqlerrm);
   END; 
   
   V_TEXT := '1|2|3|';
    
--规则数据截取出来的字段和数据库表中字段一致
    FOR rec_a_column IN cur_a_column LOOP
      --初始化
      INDEXS   := INSTR(V_TEXT, V_SPLIT);
      INDEXS   := INDEXS - 1;
      TEMP_STR := SUBSTR(V_TEXT, 1, INDEXS);
      INDEXS := INDEXS + 1;
      V_TEXT    := SUBSTR(V_TEXT, INDEXS + 1);
      v_a := rec_a_column.column_name;
      TAB_A(1).v_a:= TEMP_STR;    END LOOP;
  
    INSERT INTO A VALUES TAB_A(1) ;
  EXCEPTION
    WHEN OTHERS THEN
      PRM_APPCODE := -1;
      PRM_ERRMSG  := TRIM(SQLERRM);
  END;
END PKC_UTL_TEST;