dbms_output.put_line从函数中写出每个值

时间:2015-03-03 16:57:27

标签: sql oracle

我有一个函数,它接受三个数字参数并返回从这三个数字计算的值。现在在另一个存储过程中,我调用尝试写出这样的每个值:

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 个答案:

答案 0 :(得分: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;

可以这样使用 宣布 v_result NUMBER(9); 开始 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;