2017-07-26 1 views
-1

das ist mein Verfahren:wie kann ich in Oracle-Prozedur 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

würden Sie Ihre Frage zu formatieren - es hilft, es zu lesen :) – user3863616

+0

Ich verstehe nicht. Möchten Sie die in Ihrer Prozedur definierte Konstante string teilen oder möchten Sie die Eingabe in die Prozedur aufteilen? – mathguy

+0

ist es auch nicht klar für mich. Anyway Kombination von zwei Funktionen: ** substr ** und ** Instr ** sollten Sie substr Sie Zeichenfolge ermöglichen. – user3863616

Antwort

0

vielleicht so etwas wie folgt aus:

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;