代码之家  ›  专栏  ›  技术社区  ›  G.Chahar

如何从具有select语句的PL/SQL过程中获得单个输出

  •  1
  • G.Chahar  · 技术社区  · 7 年前

    我正在尝试执行一个PL/SQL过程。我每次都会收到nullpointerexception。可能是我以错误的方式返回了程序。

    你能帮我做这个手术吗。

    PROCEDURE p_regidexport(countryid IN varchar2, cropid IN varchar2, productid IN VARCHAR2, pregid out varchar)
    IS
     fnc       VARCHAR2(30) := 'P_REGIDEXPORT';
     query     VARCHAR2(10000);
     regid varchar(20);
    
    
     BEGIN
    
    select REG_ID into regid from GRS_Registration where LOC_ID =(select loc_id from GRS_location where Country = ' || countryid || ') AND CROP_ID = (select crop_id from GRS_crop where CROP_NM = ' || cropid || ')AND REG_NAME =' || '''' || productid || ''';
    
    pregid := regid;
     sub_log('P_REGIDEXPORT:'||pregid);
    dbms_output.put_line(pregid);
    EXCEPTION
       WHEN no_data_found THEN
    dbms_output.put_line('No record present');      
    
    
    END P_REGIDEXPORT;
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Sabarish Mahalingam    7 年前

    您不需要在参数值中串联。因为它不是动态查询。因此,您可以直接将参数变量传递到ur查询中。 确保您的qry将返回一个值。

    它只是基于您的代码的想法,您可以根据您的要求进行尝试。 希望它能帮助你!!

       create or replace  PROCEDURE p_regidexport(countryid IN varchar2, cropid IN varchar2, productid IN VARCHAR2, pregid out varchar)
        IS
        fnc       VARCHAR2(30) := 'P_REGIDEXPORT';
        query     VARCHAR2(10000);
        regid varchar(20);
    
        BEGIN
            begin
              select nvl(REG_ID,'0') into regid from GRS_Registration 
              where 
              LOC_ID =(select loc_id from GRS_location where Country = countryid ) AND 
              CROP_ID = (select crop_id from GRS_crop where CROP_NM =  cropid)AND 
              REG_NAME = productid ;
              EXCEPTION
                WHEN no_data_found THEN
                      dbms_output.put_line('No record ');  --- or regid  ='0';  
            end;
            pregid := regid;
            --sub_log('P_REGIDEXPORT:'||pregid);
            dbms_output.put_line(pregid);
            EXCEPTION
            WHEN others THEN
            dbms_output.put_line('No record present' || ' - ' || sqlerrm);      
        END P_REGIDEXPORT;
    

    祝你一切顺利!!如果有用,请单击此答案左侧的向上按钮