Oracle PL / SQL:函数传递参数时出错

时间:2017-01-16 14:00:33

标签: sql oracle plsql

当我将参数传递给函数调用时,我收到以下错误:

  

错误:PLS-00306:调用的参数的数量或类型错误   ' GET_NUM'

代码如下:

    CREATE OR REPLACE PACKAGE BODY TESTJNSABC IS

  -- FUNCTION IMPLEMENTATIONS
  FUNCTION get_num(num IN NUMBER) 
    RETURN VARCHAR2 IS
    my_cursor VARCHAR2(20);
  BEGIN
    IF get_num = 1 THEN

      my_cursor:= 'hello world';
    ELSE
      my_cursor:= 'Hi!';
    END IF;

    RETURN my_cursor;

  END;

  -- PROCEDURE IMPLEMENTATIONS 
  PROCEDURE testingabc AS
    x NUMBER(3);
    BEGIN
      x:= 2;
        dbms_output.put_line(get_num(x));
      END testingabc;

END TESTJNSABC;

2 个答案:

答案 0 :(得分:4)

您在IF get_num = 1 THEN中遇到问题,因为您在没有参数的情况下调用函数get_num,而它有一个输入参数

如果要检查参数值,可能意味着:

IF num = 1 THEN

答案 1 :(得分:0)

问题发生在IF get_num = 1。将代码更改为IF num = 1后,代码将起作用。

以下全部示例代码:

CREATE OR REPLACE PACKAGE BODY TESTJNSABC IS

-- FUNCTION IMPLEMENTATIONS

FUNCTION get_num(num IN NUMBER) 
   RETURN VARCHAR2 IS
   my_cursor VARCHAR2(20);
BEGIN
IF num = 1 THEN

  my_cursor:= 'hello world';
ELSE
  my_cursor:= 'Hi!';
END IF;

RETURN my_cursor;

END;

 -- PROCEDURE IMPLEMENTATIONS 
PROCEDURE testingabc AS
x NUMBER(3);
BEGIN
  x:= 2;
    dbms_output.put_line(get_num(x));
  END testingabc;

END TESTJNSABC;