我正在尝试在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是什么意思,因为它们似乎不对应行号。
我在制作包装时做错了什么?
答案 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_statments
和v_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');