2016-12-21 2 views
1

Я новичок в SQL и пытаюсь создать процедуру, которая принимает строку из 6 символов, например. «POLICE», а затем возвратит два значения подстроки, например. «POL», «ICE»PL/SQL Создайте процедуру, которая возвращает два строковых значения

Это то, что я пытался до сих пор:

procedure split_string(inputString in string, substr1 in OUT string, substr2 in OUT string) 
is 
begin 
     substr1 := SUBSTR(inputString, 1, 3); 
     substr2 := SUBSTR(inputString, 4, 3); 
end split_string; 

Однако это не работает, я также не уверен в том, как вызвать эту функцию и использовать ее значения в других местах в код.

Является ли это что-то вроде этого:

split_string('POLICE') ? 
+0

Вам также придется пройти подставку substr1 и substr2. Используйте 'split_string ('POLICE', substr1, substr2);'. Затем вы можете использовать substr1 и substr2, поскольку они будут иметь обновленные значения из-за вызова процедуры. Конечно, используйте VARCHAR2, как показано в ответе ниже. – Roshni

ответ

3

Используйте это:

CREATE OR replace procedure split_string(inputString in varchar2, 
             substr1 IN OUT varchar2, 
             substr2 IN OUT varchar2 
             ) 
As 

begin 
     substr1 := SUBSTR(inputString, 1, 3); 
     substr2 := SUBSTR(inputString, 4, 3); 
END split_string; 

Использование:

DECLARE 
    a VARCHAR2 (10); 
    b VARCHAR2 (20); 
BEGIN 
    split_string ('POLICE', a, b); 

    DBMS_OUTPUT.put_line (a || ',' || b); 
END; 

Выход

SQL>  

    POL,ICE 

    PL/SQL procedure successfully completed. 
+0

Хорошо, что кажется хорошо. Как я буду использовать эту процедуру в другом месте? Я хочу назвать его в другой процедуре это выглядит следующим образом: – Stackoverflow

+0

процедура get_date (inputString в строке, cRslts из ResultsCursor) является начинают открытые cRslts для выберите отчетливый column_name из таблицы п где n.column1 в (SUBSTR (ccyPair, 1, 3), SUBSTR (ccyPair, 4, 3)) end get_date; – Stackoverflow

+0

ОК СПАСИБО, это нормально – Stackoverflow

Смежные вопросы