【问题标题】:Creating a Function - Errors创建函数 - 错误
【发布时间】:2014-04-09 18:00:08
【问题描述】:

创建或替换功能 crime_tied_officer 宣布 lv_witness_check VARCHAR(40); 开始 大家好

我正在尝试为我正在为项目开发的数据库创建一个函数。但是,它正在抛出错误!

目前的错误是 第 18 行错误:PLS-00103:在预期以下情况之一时遇到符号“文件结尾”:

   ( begin case declare end exception exit for goto if loop mod
   null pragma raise return select update while with

    << continue close current delete fetch lock
   insert open rollback savepoint set sql execute commit forall
   merge pipe purge

1. CREATE OR REPLACE FUNCTION crimes_tied_officer
2. DECLARE
3. lv_witness_check VARCHAR(40);

我在下面包含了我的功能代码

CREATE OR REPLACE FUNCTION crimes_tied_officer
DECLARE
lv_witness_check VARCHAR(40);
BEGIN 
IF FK1_WITNESS_TYPE_ID = '800' THEN
lv_witness_check := 'External Observation Witness';
ELSIF FK1_WITNESS_TYPE_ID = 801 THEN
lv_witness_check := 'Expert Witness';
ELSIF FK1_WITNESS_TYPE_ID = 802 THEN
lv_witness_check := 'Partner or Spouse';
ELSIF FK1_WITNESS_TYPE_ID = 803 THEN
lv_witness_check := 'Police Officer';
ELSIF FK1_WITNESS_TYPE_ID = 804 THEN
lv_witness_check := 'The Accused';
ELSE lv_witness_check := 'No Witness Type Selected';
END IF;
RETURN lv_witness_check;
END;

我的表格位于以下链接。 http://gyazo.com/0d01e276984bf464be36db075fc62e56

http://gyazo.com/de5c17891455e01fcf81b32f86fab80c

【问题讨论】:

  • 创建函数 as 而不是 declare。您还需要指定它返回的类型。提供的example here 应该会对您有所帮助!

标签: oracle function plsql oracle-apex


【解决方案1】:

试试这个,还需要指定返回类型

CREATE OR REPLACE FUNCTION crimes_tied_officer(FK1_WITNESS_TYPE_ID VARCHAR2) RETURN VARCHAR2
  AS
    lv_witness_check VARCHAR2(40);
  BEGIN
    IF FK1_WITNESS_TYPE_ID    = '800' THEN
      lv_witness_check       := 'External Observation Witness';
    ELSIF FK1_WITNESS_TYPE_ID = 801 THEN
      lv_witness_check       := 'Expert Witness';
    ELSIF FK1_WITNESS_TYPE_ID = 802 THEN
      lv_witness_check       := 'Partner or Spouse';
    ELSIF FK1_WITNESS_TYPE_ID = 803 THEN
      lv_witness_check       := 'Police Officer';
    ELSIF FK1_WITNESS_TYPE_ID = 804 THEN
      lv_witness_check       := 'The Accused';
    ELSE
      lv_witness_check := 'No Witness Type Selected';
    END IF;
    RETURN lv_witness_check;
  END;

【讨论】:

  • 第 5 行错误:PL/SQL:语句被忽略 3. lv_witness_check VARCHAR2(40); 4. BEGIN 5. IF FK1_WITNESS_TYPE_ID = '800' THEN 6. lv_witness_check := '外部观察见证'; 7. ELSIF FK1_WITNESS_TYPE_ID = 801 THEN 在该代码上返回。
  • “FK1_WITNESS_TYPE_ID”是一个参数吗?
  • 添加了参数,所以请确保在调用它时将“FK1_WITNESS_TYPE_ID”传递给它,如果这对您有用,您能接受我的回答吗?
猜你喜欢
  • 2011-05-17
  • 2018-06-29
  • 1970-01-01
  • 2019-10-01
  • 2014-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多