【发布时间】:2016-06-29 13:44:21
【问题描述】:
我正在尝试在 Toad 中创建一个 PL SQL 包。我点击“编译为脚本”。它说创建了包但有编译错误;我得到了这个巨大的错误列表,但我想从第一个开始。
这是我的代码的前几行(包很大,显然不想全部发布)
CREATE OR REPLACE PACKAGE cop_cow_scripts AS
TYPE arr_claims_t IS VARRAY(15000) OF VARCHAR2(10);
TYPE arr_sql_t IS VARRAY(500) OF VARCHAR2(1000);
-- declaring procedure that will call COP_DATALOAD_V2 and COW_DATALOAD
PROCEDURE COP_COW_DATALOAD_V2(claims_array arr_claims_t, sql_array arr_sql_t);
END cop_cow_scripts;
CREATE OR REPLACE PACKAGE BODY cop_cow_scripts AS
sql_statments arr_sql := arr_sql();--initialize a empty lis
/* PROCEDURE AND VARIABLE
INITILIZATION FOR COW_DATALOAD_V2
/***************************************************************************/
--*********** PUT YOUR LIST OF CERTS BELOW ******************
v_certList arr_claims := arr_claims('3803617642', '3805126441', '3876849047'
, '3873116383', '3873306670', '3878876718');
--COP VARIABLES---
new_copId number; --NEW COP ID
prod_copId number; --PROD COP ID
new_seq_id number; --NEW SEQ ID
suppl_count number; --supplemental count
v_SQL varchar2(7000);
v_certLst varchar2(2000);
n_success NUMBER := 0; --Count of success found
n_total NUMBER := 0; --Total Records proccessed
n_suppl NUMBER := 0; --Total Records proccessed
n_orders NUMBER := 0; --Total lmso orders downloaded
/*cop procedure*/
PROCEDURE COP_DATALOAD_V2(arr_claims arr_claims_t, arr_sql arr_sql_t)
IS
在此之后我定义了我的第一个过程。
我得到的两种主要错误是: 4/19 PLS-00201:必须声明标识符“ARR_SQL” 4/19 PL/SQL:项目被忽略 12/16 PLS-00201:必须声明标识符“ARR_CLAIMS” 12/16 PL/SQL:项目被忽略 42/14 PLS-00320:此表达式类型的声明不完整或格式错误
... 等等。
我对 pl sql 很陌生。我什至不确定 4/19 或 12/16 是什么意思,因为它们似乎与行号不对应。
我在制作包裹时做错了什么?
【问题讨论】:
-
在您的包规范中,您定义了
arr_claims_t和arr_sql_t的类型。看起来在您的身体中,您正在尝试使用arr_claims和arr_sql类型。这些特定类型是否在任何地方定义(例如,作为全局类型,例如create type arr_sql ...,或作为包主体/规范中的类型? -
你是对的。我现在觉得很笨。你能帮我解释一下错误吗?哪个数字显示行号? TOAD 中是否有调试器或类似的东西以便更好地查看?再次感谢您!
-
4/19指的是包源中的第 4 行第 19 列,记住行号从PACKAGE或PACKAGE BODY行开始。在您的情况下,错误在包体中,因此您必须从PACKAGE BODY行开始计数。