Oracle 在游标PLSQL过程中获取多条记录

Oracle 在游标PLSQL过程中获取多条记录,oracle,stored-procedures,plsql,procedure,oracle-ebs,Oracle,Stored Procedures,Plsql,Procedure,Oracle Ebs,表格:WSH\u DEL\u详细信息\u界面 唯一列:交付\详细信息\接口\ ID 程序输入:交付\u详细信息\u接口\u ID 要获取的列值:销售订单行号,销售订单号 预期输出: 单记录 实际输出: 正在提取表中的所有记录 代码: create or replace PROCEDURE procedurevalidation( delivery_detail_interface_id IN WSH_DEL_DETAILS_INTERFACE.DELIVERY_DETAIL_INTERFACE

表格:WSH\u DEL\u详细信息\u界面

唯一列:交付\详细信息\接口\ ID

程序输入:交付\u详细信息\u接口\u ID

要获取的列值:销售订单行号销售订单号

预期输出: 单记录

实际输出: 正在提取表中的所有记录

代码:

create or replace PROCEDURE procedurevalidation(
delivery_detail_interface_id IN 
WSH_DEL_DETAILS_INTERFACE.DELIVERY_DETAIL_INTERFACE_ID%TYPE,
ROW_COUNT OUT INTEGER)
IS
CURSOR wddi_cur IS SELECT *  FROM WSH_DEL_DETAILS_INTERFACE WHERE 
DELIVERY_DETAIL_INTERFACE_ID = delivery_detail_interface_id;
wddi_record WSH_DEL_DETAILS_INTERFACE%ROWTYPE;

BEGIN

OPEN wddi_cur;

LOOP

FETCH wddi_cur into wddi_record;
EXIT when wddi_cur%NOTFOUND;

DBMS_OUTPUT.ENABLE(100000);
DBMS_OUTPUT.PUT_LINE(delivery_detail_interface_id);

DBMS_OUTPUT.PUT_LINE('SALESORDERNUMBER111:::: ' || 
wddi_record.SALES_ORDER_NUMBER);
DBMS_OUTPUT.PUT_LINE('SALESORDERLINENUMBER1111::::: ' || 
wddi_record.SALES_ORDER_LINE_NUMBER);
DBMS_OUTPUT.PUT_LINE('COUNT' || ROW_COUNT);

END LOOP;
CLOSE wddi_cur;


end;

您需要将输入变量的名称更改为您的过程

create or replace PROCEDURE procedurevalidation(
p_delivery_detail_interface_id IN 
WSH_DEL_DETAILS_INTERFACE.DELIVERY_DETAIL_INTERFACE_ID%TYPE,
ROW_COUNT OUT INTEGER)
在游标中,还需要更改变量名

CURSOR wddi_cur 
    IS 
SELECT *  
  FROM WSH_DEL_DETAILS_INTERFACE 
 WHERE DELIVERY_DETAIL_INTERFACE_ID = p_delivery_detail_interface_id;

光标正在返回表中的所有记录,因为您正在使表的列本身相等,并且没有将其与过程中的输入变量匹配

您需要将输入变量的名称更改为过程

create or replace PROCEDURE procedurevalidation(
p_delivery_detail_interface_id IN 
WSH_DEL_DETAILS_INTERFACE.DELIVERY_DETAIL_INTERFACE_ID%TYPE,
ROW_COUNT OUT INTEGER)
在游标中,还需要更改变量名

CURSOR wddi_cur 
    IS 
SELECT *  
  FROM WSH_DEL_DETAILS_INTERFACE 
 WHERE DELIVERY_DETAIL_INTERFACE_ID = p_delivery_detail_interface_id;
游标将返回表中的所有记录,因为您将表的列本身相等,而不是将其与过程中的输入变量匹配