oracle - 必须声明 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.
解决方案
你有两个错误:
不要使用带引号的标识符:
CREATE TYPE rep_table_O AS OBJECT ( day VARCHAR2(250 BYTE), TS DATE ); CREATE TYPE rep_table_T AS TABLE OF rep_table_O;
(或者,如果您确实必须使用小写标识符 [为什么?] 那么您需要使用带引号的标识符,并且在使用该标识符的任何地方都使用完全相同的大小写。)
不要使用
%ROWTYPE
:CREATE PROCEDURE MY_HELPER ( rep_table_row IN OUT rep_table_T ) IS ... END MY_HELPER;
db<>在这里摆弄
推荐阅读
- python - Selenium:Chrome 启动失败:异常退出。DevToolsActivePort 文件不存在
- python - 如何根据熊猫中的条件删除一行,并将字符串转换为整数进行比较
- javascript - 使用 React API 从 CDN 创建 DatePicker
- r - 粗体 (R) 饼图标签
- c - 错误:从“int”分配给“string”(又名“char *”)的指针转换不兼容的整数
- javascript - 我很难让 Ajax 使用 django 表单发送发布请求
- python - 从本地相对路径而不是 pip 安装模块导入?
- haskell - 以正确的方式在 Haskell 中编写模块
- c# - 如何正确格式化带有密码的 ac# 7-zip 字符串?
- asp.net-core - 接受多个文件上传和附加参数的 REST API 方法