【问题标题】:How to get single output from PL/SQL procedure having select statement如何从具有选择语句的 PL/SQL 过程中获取单个输出
【发布时间】:2017-10-04 05:27:26
【问题描述】:

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

你能帮我完成这个过程吗?

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;

【问题讨论】:

  • PL/SQL中不存在“空指针异常”之类的东西

标签: plsql procedure plsqldeveloper


【解决方案1】:

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

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

【讨论】:

  • 实际上,countryid、cropid 和 productid 的值来自 Web 应用程序,使用这些值我需要从中返回单个输出
  • 它可能会发生什么...但是您会将这些参数值传递到此程序仪式中吗? (这是为了我的理解)那么你想创建一个过程来获取 regid 作为这个过程的输出吗?或者你想访问这个程序来获取参数值!你的要求是什么?
  • 是的!,要求仅此而已,但是这些值是字符串,因此我们需要将它们连接起来。如果我错了,请纠正我
  • 它是什么......没问题......你没有直接硬编码到你的qry中。参数值应该将它分配给 qry 所以你不需要连接,如果有任何问题请尝试我的代码让我知道,我会帮你解决它。
  • 非常感谢,它对我有用。你节省了我很多时间。如果你不介意我可以问一件事。我提出的查询有什么问题。我们不能以我使用的那种方式使用它。因为早些时候它对我有用。突然它停止了。您能否检查我的查询,让我知道其中有什么问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 2018-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多