为什么我在PL SQL包中获得Declare Identifier和许多其他错误?

时间:2016-06-29 13:44:22

标签: sql oracle plsql

我正在尝试在Toad中创建一个PL SQL包。我点击'compile as script'。它说包创建但有编译错误;我得到了这个巨大的错误列表,但我想从第一个开始。

以下是我的代码的前几行(包很大,显然不想发布所有代码)

   /*                    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
SELECT  VoucherId, 
        PosDateEntered, 
        SUM(VoucherFaceValue) AS ValueIssued, 
        SUM(AmountUsed) AS ValueReedeemed, 
        RVtransactionAmount    
FROM [dbo].[LoyaltyVoucherTransactionDetails]
WHERE  VoucherId = '2000702' 
GROUP BY PosDateEntered, VoucherId, RVtransactionAmount

在此之后我定义了我的第一个程序。

我得到的两种主要错误是: 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是什么意思,因为它们似乎不对应行号。

我在制作包装时做错了什么?

2 个答案:

答案 0 :(得分:1)

arr_claims_t可能是您的用户没有执行权限的类型。当Oracle尝试解析您的过程时,您的用户不知道此类型,因此您会收到您看到的错误。

具有DBA权限的用户从您的GUI客户端(如SQL Developer或Toad)或SQLPlus命令行运行

GRANT EXECUTE ON arr_claims_t to <YourUser>;
GRANT EXECUTE ON arr_sql_t to <YourUser>;

答案 1 :(得分:1)

问题似乎只是您声明sql_statmentsv_certList变量的类型错误(缺少“_t”):

正确声明是:

sql_statments arr_sql_t := arr_sql_t();--initialize a empty lis 

v_certList arr_claims_t := arr_claims_t('3803617642', '3805126441', '3876849047'
, '3873116383', '3873306670', '3878876718');