首页 > 解决方案 > 必须声明 PLS-00201 标识符“rep_table_T”

问题描述

我正在尝试编译此过程。我希望它将表格行作为参数:

create or replace PROCEDURE MY_HELPER (rep_table_row IN OUT rep_table_T%ROWTYPE)  IS
...
END MY_HELPER ;

该表定义为

create or replace TYPE         "rep_table_T" AS TABLE OF rep_table_O;

对象定义为:

create or replace TYPE         "rep_table_O" AS OBJECT (       
    "day" VARCHAR2(250 BYTE),
    "TS" DATE
    );

但是我无法编译它,因为我收到了错误:

PLS-00201 identifier "rep_table_T" must be declared. 

标签: oracleplsql

解决方案


你有两个错误:

  1. 不要使用带引号的标识符:

    CREATE TYPE rep_table_O AS OBJECT (       
      day VARCHAR2(250 BYTE),
      TS  DATE
    );
    
    CREATE TYPE rep_table_T AS TABLE OF rep_table_O;
    

    (或者,如果您确实必须使用小写标识符 [为什么?] 那么您需要使用带引号的标识符,并且在使用该标识符的任何地方都使用完全相同的大小写。)

  2. 不要使用%ROWTYPE

    CREATE PROCEDURE MY_HELPER (
      rep_table_row IN OUT rep_table_T
    )
    IS
      ...
    END MY_HELPER;
    

db<>在这里摆弄


推荐阅读