[英]How to display value return from function in procedure
我想将p_string传递给过程,然后过程将其传递给函数,函数将布尔返回给过程,然后使用dbms_output.put_line显示布尔值返回过程。 但是,我一直无法显示它。 我应该如何显示?
CREATE OR REPLACE PACKAGE BODY LAB4_527802_pkg AS
FUNCTION LAB4_527802_FCN( p_string VARCHAR2)
RETURN BOOLEAN
AS
string1 BOOLEAN;
BEGIN
IF p_string = 'AAA' THEN
string1 := TRUE;
ELSE
string1 := FALSE;
END IF;
return string1;
END LAB4_527802_FCN;
PROCEDURE LAB4_527802_PROC (p_string varchar2)
AS
string1 boolean;
BEGIN
string1 := LAB4_527802_pkg.LAB4_527802_FCN(p_string);
dbms_output.put_line (string1);
END LAB4_527802_PROC;
END LAB4_527802_pkg;
/
SHOW ERRORS
这就是我所说的程序。
set serveroutput on;
begin
LAB4_527802_pkg.LAB4_527802_PROC ('AAA');
end;
尽管变量名为string1,但在函数LAB4_527802_FCN和过程LAB4_527802_PROC中均将该变量声明为布尔值。 我首先建议使用其他名称。 但是,您可能会想到,这不是问题的原因。
排队
dbms_output.put_line (string1);
您正在尝试打印不起作用的boolean类型的变量。 过程put_line需要一个“字符串”(char,varchar,varchar2)参数。
我怀疑您收到以下错误,不是吗?
PLS-00306: wrong number or types of arguments in call to 'PUT_LINE'
您需要将布尔值转换为字符串才能打印出来。 例如:
DBMS_OUTPUT.put_line (CASE WHEN string1 THEN 'TRUE' ELSE 'FALSE' END);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.