比较两个字段并在另一个表中返回不匹配的存储过程

Posted

技术标签:

【中文标题】比较两个字段并在另一个表中返回不匹配的存储过程【英文标题】:Stored Procedure to comapre 2 fields and return mismactch in another table 【发布时间】:2013-04-24 13:59:54 【问题描述】:

我正在 Oracle SQL Developer 中创建存储过程。我正在尝试比较 2 个表的两列,如果任何表有更多记录,我需要收集它们并将其存储在(另一个表)中抛出

ORA-01422:精确提取返回的行数超过了请求的行数 ORA-06512:在“TEST_VAL”,第 73 行 ORA-06512: 在第 2 行

如果我将其作为 SQL 查询运行,则该查询运行良好

SELECT h.STATEMENTNUMBER, h.STATEMENTTOTAL
FROM statement_header h
MINUS
SELECT j.STATEMENTNUMBER, j.STATEMENTTOTAL
FROM jwf_statement j;

我的存储过程是这样的

create or replace PROCEDURE        TEST_VAL 
IS
l_num_recs        VARCHAR2 (20);
BEGIN
select STATEMENTNUMBER into  l_num_recs
from
(SELECT H.STATEMENTNUMBER, H.STATEMENTTOTAL
FROM statement_header H
MINUS
SELECT J.STATEMENTNUMBER, J.STATEMENTTOTAL
FROM jwf_statement J

);
insert into l_num_recs values(l_num_recs);
Commit;
End;

任何帮助都会得到帮助

【问题讨论】:

请您在问题末尾添加一个问题吗? 【参考方案1】:
create or replace PROCEDURE        TEST_VAL 
IS
BEGIN
insert into destinationTableName
select STATEMENTNUMBER
from
(SELECT H.STATEMENTNUMBER, H.STATEMENTTOTAL
FROM erocks.statement_header_staging H
MINUS
SELECT J.STATEMENTNUMBER, J.STATEMENTTOTAL
FROM erocks.ps_jwf_statement_staging J
);
Commit;
End;

【讨论】:

以上是关于比较两个字段并在另一个表中返回不匹配的存储过程的主要内容,如果未能解决你的问题,请参考以下文章

存储过程,在返回客户端之前将结果存储在另一个表中

存储过程使用连接从一个表中选择所有字段

如何将存储过程的结果返回到用于插入记录的选择语句

Mysql某个表有近千万数据,CRUD比较慢,如何优化?

Oracle存储过程创建临时表,插入数据后,怎么返回临时表数据,并在asp.net中接收到datatable中

VB.NET是如何使用ADO让存储过程返回数据表中的值呢?求解!