我正准备创建一个商店程序,它到目前为止一直有效。 (出于学习目的,我想将信用卡号码交给存储过程,该存储过程应返回相关的客户识别号码。) 但是,当我想使用
测试此过程时BEGIN CC_TO_CID(:p1, :p2);
END;
(输入数据是通过我的SQL IDE对话提交的) 它刚回来了:
SQL错误[6550] [65000]:ORA-06550:第1行,第7列:
PLS-00905 对象xyz.CC_TO_CID无效
ORA-06550:第1行,第7列:
PL / SQL:忽略语句
这基本上意味着我的存储过程格式不正确,但我真的没有任何线索。
我的存储过程:
CREATE OR REPLACE PROCEDURE CC_TO_CID(in_cc_nr IN NUMBER(16,0), out_cid OUT NUMBER) IS
BEGIN
SELECT PM.CUSTOMER_ID INTO cid FROM "2_PAYMENT_M" PM,
"2_CREDITCARD" CC
WHERE CC.CC_NR=in_cc_nr AND CC.PAYMENT_M_NR=PM.PAYMENT_M_NR;
END;
我的表结构包含一些测试数据:
Table: "2_CREDITCARD"
CC_NR PAYMENT_M_NR NAME CVV EXPIRES
------------------ -------------- -------------- ----- ---------------------
5307458270409047 1 Haley Harrah 52 2019-11-01 00:00:00
Table: "2_PAYMENT_M"
PAYMENT_M_NR CUSTOMER_ID CREATED TRANSACTION_LIMIT
-------------- ------------- --------------------- -------------------
1 100 2018-01-21 00:00:00 1.000
提前致谢! 我感谢任何有用的提示。
答案 0 :(得分:1)
编译过程时会出现错误,但它可能非常通用。您的客户可能会支持class MyClass extends SubClass {
call(): void {
RootClass.prototype.call.call(this);
}
}
,或者您可以查询show errors
视图以查看详细信息。
您无法为某个功能或程序指定the data type of a formal parameter的尺寸或精度限制,因此user_errors
应为NUMBER(10,0)
;并且您的NUMBER
子句中的参数名称错误。
into
我已经切换到ANSI连接语法,因为......好吧,只是因为。未经测试,因为我没有你的桌子;如果仍然出现错误,请再次检查CREATE OR REPLACE PROCEDURE CC_TO_CID(in_cc_nr IN NUMBER, out_cid OUT NUMBER) IS
BEGIN
SELECT PM.CUSTOMER_ID
INTO out_cid
FROM "2_PAYMENT_M" PM
JOIN "2_CREDITCARD" CC
ON CC.PAYMENT_M_NR=PM.PAYMENT_M_NR
WHERE CC.CC_NR=in_cc_nr;
END;
。