当我调用该过程时,它给了我错误:ORA-06553: PLS-306: wrong number or types of arguments in call to phone_info

Posted

技术标签:

【中文标题】当我调用该过程时,它给了我错误:ORA-06553: PLS-306: wrong number or types of arguments in call to phone_info【英文标题】:While I call the procedure, it gives me error: ORA-06553: PLS-306: wrong number or types of arguments in call to phone_info 【发布时间】:2017-09-29 12:05:27 【问题描述】:

这是我的程序代码:

   CREATE OR REPLACE PROCEDURE phone_info (
   numar        IN     order_detail_data.phone_number%TYPE,
   process_s       OUT VARCHAR2,
   type_e          OUT VARCHAR2,
   status_s        OUT VARCHAR2,
   acceptor_r      OUT VARCHAR2,
   donor_r         OUT VARCHAR2,
   porting_g       OUT VARCHAR2,
   Idate_e         OUT VARCHAR2,
   Fdate_e         OUT VARCHAR2,
   ancom_d         OUT VARCHAR2,
   status_f        OUT VARCHAR2,
   error_r         OUT VARCHAR2,
   creation_n      OUT VARCHAR2)
IS
BEGIN
   SELECT od.process_type,
          NVL (od.subscription_type_fd, od.process_type),
          c."STATUS",
          od.recipient_id,
          od.donor_id,
          oda.porting_id,
          NVL (od.initial_date, TO_DATE ('31-12-9999', 'DD-MM-YYYY')),
          NVL (od.final_date, TO_DATE ('31-12-9999', 'DD-MM-YYYY')),
          oi.REG_PORTING_ID,
          s.sub_status,
          NVL2 (oj.error_description, oj.error_description, s.sub_status),
          oda.sys_creation_date
     INTO process_s,
          type_e,
          status_s,
          acceptor_r,
          donor_r,
          porting_g,
          Idate_e,
          Fdate_e,
          ancom_d,
          status_f,
          error_r,
          creation_n
     FROM order_data od
          LEFT JOIN order_detail_data oda ON od.porting_id = oda.porting_id
          LEFT JOIN order_sub_statuses s ON s.id = oda.sub_status_id
          LEFT JOIN order_reject_details oj ON oda.porting_id = oj.porting_id
          LEFT JOIN order_id oi ON oda.porting_id = oi.porting_id
          LEFT JOIN order_bpm_processes bx ON oda.porting_id = bx.porting_id
          LEFT JOIN order_detail_statuses c ON c.id = oda.status_id
    WHERE oda.phone_number = numar;
-- Afisare dbms_output.put_line('######### DONE #########');
--         dbms_output.put_line('Process: ' || process_s);
--         dbms_output.put_line('TYPE: ' || type_e);
--         dbms_output.put_line('Status: ' || status_s);
--         dbms_output.put_line('Acceptor: ' || acceptor_r);
--         dbms_output.put_line('Donor: ' || donor_r);
--         dbms_output.put_line('Porting: ' || porting_g);
--         dbms_output.put_line('Idate: ' || Idate_e);
--         dbms_output.put_line('Fdate: ' || Fdate_e);
--         dbms_output.put_line('Ancom_ID: ' || ancom_d);
--         dbms_output.put_line('Status_flow: ' || status_f);
--         dbms_output.put_line('Error: ' || error_r);
--         dbms_output.put_line('Creation: ' || creation_n);
--         dbms_output.put_line('######### FINISHED #########');

END;

【问题讨论】:

显示你是如何调用这个过程的。当您传递给它的参数少于/多于定义的参数或传递错误的类型时,通常会发生此错误:您的过程具有 INT INT VARCHAR 并且您传递的是 INT INT DATE。 【参考方案1】:

您的过程中有许多输出,您可以将这些数据存储在表中然后检索它们。 无论如何,至于你的错误: 您是否使用 varchar 或引号传递第一个参数。它应该是数字。 我还注意到参数 Idate_e 是 varchar 但是它似乎你正在传递日期值。尝试如下

DECLARE
phonenumb NUMBER;
process_s varchar2, 
type_e varchar2, 
status_s varchar2, 
acceptor_r varchar2, 
donor_r varchar2, 
porting_g varchar2, 
Idate_e date, 
Fdate_e date, 
ancom_d varchar2, 
status_f varchar2, 
error_r varchar2, 
creation_n  varchar2
begin 
 phone_info (1123,process_s,process_s,type_e,status_s,acceptor_r,donor_r,porting_g,Idate_e,Fdate_e,ancom_d,status_f,error_r,creation_n);
end;
/

【讨论】:

以上是关于当我调用该过程时,它给了我错误:ORA-06553: PLS-306: wrong number or types of arguments in call to phone_info的主要内容,如果未能解决你的问题,请参考以下文章

ora-06553 pls-306 调用“ogc_x”时参数的数量或类型错误

当我尝试创建一个角色时,它给了我一个错误(discord.js)

在我通过 "npm i nodemon" 安装 nodemon 后,当我尝试通过 "nodemon server.js" 运行它时,它给了我这个错误。我该怎么办

如何让普罗米修斯 webflux r2dbc 在春天一起工作?当我尝试从服务运行实际 api 时,它给了我错误

调用 API 时解析正文出错

我尝试使用 passport.js 对用户进行身份验证,但它给了我一个错误**服务器响应状态为 400(错误请求)**