2013-03-25 91 views
0

我有一個varray爲varchar2的表中有一列。獲取此列值後,我想處理此varray列的每個元素。如何將檢索到的列分割成單獨的值。在sql中拆分列值

+0

HTTP的可能重複:// stackoverflow.com/questions/1742728/mysql-explode-split-input-to-stored-procedure – gerrytan 2013-03-25 04:12:21

回答

0

這可以幫助你:

CREATE TABLE t (id NUMBER, val VARCHAR2(20)); 
insert into t values (1,'val1'); 
INSERT INTO t VALUES (2,'val2'); 
INSERT INTO t VALUES (3, 'val3'); 

SET serveroutput ON 
DECLARE 
type my_type IS varray(200) OF VARCHAR2(200); 
obj1 my_type := my_type(); 
BEGIN 
    FOR i IN 1..3 LOOP 
      obj1.extend; 
      SELECT val INTO obj1(i) FROM t WHERE id = i; 
    end loop; 

    FOR j IN obj1.first..obj1.last LOOP 
      dbms_output.put_line(obj1(j)); 
    END LOOP; 
END; 

結果:

val1 
val2 
val3 

,或者您可以使用下面的如下因素嵌套表列:

FOR REC IN 
    (SELECT * FROM TABLE(c) --or select * from table(cast(c as object_type_tab)) 
    ) 
    LOOP 
      dbms_output.put_line(rec.id || ', ' || rec.val); 
    END LOOP;