2017-07-26 47 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;