2015-03-03 2 views
0

У меня есть функция, которая принимает три аргумента числа и возвращает значение, рассчитанное из этих трех чисел. Теперь в другой хранимой процедуры я зову попытаться выписать каждое значение, как это:dbms_output.put_line выписывать каждое значение из функции

CREATE OR REPLACE PROCEDURE P_POOL 
IS 

BEGIN 

DBMS_OUTPUT.PUT_LINE('test'||' '||POOL_PKG.F_REKTANGULÄR(6,4,2); 

Но я хочу, чтобы на выходе будет пример:

test is 6 meter and 4 meter and 2 meter! 

Как я могу добавить текст после каждого значения?

ответ

1

Тест

Package POOL_PKG 
IS 

FUNCTION F_REKTANGULÄR(meter_in NUMBER,height_in NUMBER,bottom_in NUMBER,Show_dims_in IN NUMBER := 0) RETURN NUMBER; 

END POOL_PKG; 

Package Body POOL_PKG is 

FUNCTION F_REKTANGULÄR(meter_in NUMBER,height_in NUMBER,bottom_in NUMBER, Show_dims_in IN NUMBER := 0) RETURN NUMBER 
v_result NUMBER(10); 
v_unit VARCHAR2(10) := 'meter'; 
IS 

--assert that all inputs are greater than 0 
--and less than a reasonable amount 

v_result := meter_in * height_in * bottom_in; 
IF show_dims_in = 1 
THEN 
DBMS_OUTPUT(meter_in ||' '||v_unit||', '||height_in||' '||v_unit||', '||bottom_in); 
END IF; 
RETURN v_result; 
END F_REKTANGULÄR; 

END POOL_PKG; 

и может быть использован таким образом DECLARE v_result НОМЕР (9); BEGIN v_result: = POOL_PKG.F_REKTANGULÄR (6, 4, 2,1); END;

Или, учитывая ваши комментарии, это будет работать на:

Declare 
a NUMBER(9); 
b NUMBER(9); 
c NUMBER(9); 
v_unit VARCHAR2(10) := 'meter'; 
v_result NUMBER(9); 
BEGIN 
a := 6; 
b := 4; 
c := 2; 

    DBMS_OUTPUT(a||' '||v_unit||', '||b||' '||v_unit||', '||c||' '||v_unit); 
    v_result := POOL_PKG.F_REKTANGULÄR(a ,b ,c); 
END; 
+0

К сожалению было немного поторопиться :-) Хорошо, я попробую. Я хочу, чтобы выход был таким: 6 метров, 4 метра и 2 метра. –

+0

Это работает .. ty very much .. :)) –

+0

Не можете ли вы изменить dbms_output? CREATE OR REPLACE PROCEDURE P_POOL IS НАЧАТЬ DBMS_OUTPUT.PUT_LINE (POOL_PKG.F_REKTANGULÄR (6,4,1.5)); Невозможно выбрать значение 6 сначала и распечатать после, затем 4, чтобы получить следующее: spec: Длина 6 метров, нижняя 2 метра, высота 1,5 метра ..? У меня есть хранимая процедура, которая вызывается этой функцией. –

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