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

Plsql 如何从具有select语句的PL/SQL过程中获得单个输出,plsql,procedure,plsqldeveloper,Plsql,Procedure,Plsqldeveloper,我正在尝试执行一个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(

我正在尝试执行一个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;

您不需要在参数值中串联。因为它不是动态查询。因此,您可以直接将参数变量传递到您的查询中。 确保您的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;

祝你一切顺利!!如果有用的话,点击这个答案左侧的向上按钮

在PL/Sql中没有“空指针异常”这样的事情实际上,countryid、cropid和productid的值来自web应用程序,使用这些值我需要从它返回单个输出,不管它可能是什么。。。但是您将把这些参数值传递到这个过程中吗?(这是为了我的理解)那么您想创建一个过程来获取regid作为这个过程的输出吗?或者您想访问此过程以获取参数值!!你的要求是什么?是的!,要求仅此而已,但这些值是字符串,所以我们需要将它们连接起来。如果我错了,请纠正我到底是什么。。没问题。。ur未直接硬编码到ur qry中。参数值应该分配给qry,所以你不需要连接,jst试试我的代码。如果有任何问题让我知道,我会帮你解决。非常感谢,它对我有用。你节省了我很多时间。如果你不介意的话,我可以问你一件事吗。我提出的问题是什么。我们不能像我那样使用它吗。因为早些时候它对我有用。突然它停了下来。你能检查一下我的查询,让我知道里面有什么问题吗。