2017-07-26 49 views
-1

這是我的方法:我如何能夠在Oracle過程SUBSTR

create or replace PROCEDURE testsub(factTName IN VARCHAR2) 
IS 
    v_in_char VARCHAR2(100):='id,name,age,cjrq'; 
    v_result VARCHAR2(200) :=''; 
begin 
    -- split v_in_char,expect cjrq 
    -- i want result like t.uuid=uuid and t.uuname=uuname and t.uuage=uuage 

    SYS.DBMS_OUTPUT.PUT_LINE(v_result); 
end; 
+0

會格式化你的問題 - 它有助於閱讀:) – user3863616

+0

我不明白。您是否想要拆分在過程中定義的常量字符串,還是要將輸入拆分爲過程? – mathguy

+0

這對我來說也不是很清楚。無論如何,兩個函數的組合:** substr **和** instr **應該允許您對字符串進行排序。 – user3863616

回答

0

也許是這樣的:

select substr(v_in_char,instr(v_in_char,',',1,3)+1) into v_result 
from dual; 
0
create or replace PROCEDURE testsub(factTName IN VARCHAR2) 
IS 
    v_primy_keys VARCHAR2(200) :=''; 
    cursor primy_key is 
    select field_en_name from BASE_FIELD_INFO where base_rpt_id=lower(factTName) and primy_key='true'; 
    primy_key_row primy_key%ROWTYPE; 
begin 
    for primy_key_row in primy_key loop 
    IF primy_key_row.field_en_name='CJRQ' THEN 
     DBMS_OUTPUT.PUT_LINE(''); 
    ELSE 
     v_primy_keys:=v_primy_keys||'t.'||primy_key_row.field_en_name||'='||primy_key_row.field_en_name||' '; 
    END IF; 
    v_primy_keys:=v_primy_keys||' and '; 
    end loop; 
    v_primy_keys:=substr(v_primy_keys,1,length(v_primy_keys)-4); 
    dbms_output.put_line(v_primy_keys); 
end;