如何在程序中显示函数的返回值

时间:2017-02-23 06:13:50

标签: oracle function plsql procedure

我想将p_string传递给过程,然后程序将它传递给函数,函数将boolean返回给过程,然后使用dbms_output.put_line显示boolean返回过程。但是,我一直有问题显示它。我应该如何展示它?

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; 

1 个答案:

答案 0 :(得分:2)

虽然名为string1,但变量在函数LAB4_527802_FCN和过程LAB4_527802_PROC中声明为boolean。 我首先建议使用不同的名称。但正如您可能想象的那样,这不是问题的原因。

排队

dbms_output.put_line (string1);

你正在尝试打印一个不起作用的boolean类型的变量。程序put_line需要一个'字符串' (char,varchar,varchar2)参数。

我怀疑你得到以下错误,不是吗?

PLS-00306: wrong number or types of arguments in call to 'PUT_LINE'

您需要将布尔值转换为字符串才能打印它。 E.g:

DBMS_OUTPUT.put_line (CASE WHEN string1 THEN 'TRUE' ELSE 'FALSE' END);