我有一个函数,它接受三个数字参数并返回从这三个数字计算的值。现在在另一个存储过程中,我调用尝试写出这样的每个值:
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!
如何在每个值后添加文字?
答案 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;