PL / SQL函数有一个参数

时间:2014-12-06 06:06:31

标签: oracle plsql

我想知道你是否可以提供帮助。

我的斗智斗勇。

我想创建一个带一个参数的函数。

这是我的代码。运行时我一直收到错误:

  

错误(3,19):PLS-00103:遇到符号“;”当期待以下之一时:
  begin function pragma procedure子类型当前游标删除存在于先前的外部语言

代码

set serveroutput on;

CREATE OR REPLACE FUNCTION CheckBookType (
  p_book_type  TITLES.CATEGORY
) RETURN BOOLAN IS;

BEGIN

  IF (p_book_type = 'business') THEN


    return true;

  ELSE

   return false;

  END IF;

  RETURN v_ReturnValue;
END CheckBookType;

2 个答案:

答案 0 :(得分:1)

最简单的解决方案:

CREATE OR REPLACE FUNCTION CheckBookType (
        p_book_type IN  TITLES.CATEGORY%type
    ) RETURN BOOLEAN 
IS
BEGIN

  return p_book_type = 'business';

END CheckBookType;

答案 1 :(得分:0)

让我们在您的代码中逐行查看问题:

  

设置serveroutput;

  1. 它没有造成任何伤害,但我不知道它在上下文中有何帮助或需要。

  2. p_book_type TITLES.CATEGORY错误,因为您需要使用constrained指定它是%TYPE attribute数据类型。正确的方法是

  3. p_book_type TITLES.CATEGORY%TYPE

    1. 上面已经有人提到过,返回值的数据类型应该是BOOLEAN。并且你不必在" IS"之后放置分号。

    2. 未声明返回布尔值的variable

    3. v_ReturnValue BOOLEAN;

      1. 请注意,使用BOOLEAN数据类型作为回报将不允许您使用function 中的SQL。因为,boolean不是SQL数据类型。 Boolean是PL/SQL数据类型。您只能使用PL / SQL中的函数而不能使用SQL中的函数。
      2. 您的功能如下:

        相当详细。

        CREATE OR replace FUNCTION Checkbooktype (p_book_type titles.category%TYPE) 
        RETURN BOOLEAN 
        IS 
          v_returnvalue BOOLEAN; 
        BEGIN 
            IF ( p_book_type = 'business' ) THEN 
              v_returnvalue:= TRUE; 
            ELSE 
              v_returnvalue:= FALSE; 
            END IF; 
        
            RETURN v_returnvalue; 
        END checkbooktype; 
        
        / 
        

        或者,没有和ELSE,将返回默认值设为FALSE

        不那么冗长。

        CREATE OR replace FUNCTION Checkbooktype (p_book_type titles.category%TYPE) 
        RETURN BOOLEAN 
        IS 
          v_returnvalue BOOLEAN; 
        BEGIN 
        
            v_returnvalue:= FALSE;
        
            IF ( p_book_type = 'business' ) THEN 
              v_returnvalue:= TRUE;  
            END IF; 
        
            RETURN v_returnvalue; 
        END checkbooktype; 
        
        / 
        

        @ APC的解决方案最简洁。