在块内不执行插入查询

问题描述 投票:0回答:1

我在oracle plsql中创建了一个存储过程。

它由一个插入查询组成,插入查询如果在存储过程外执行的话,工作正常,但是当我带着插入查询运行存储过程时,存储过程被成功执行,但是插入的记录没有反映在表中。

create or replace PROCEDURE DEMO_PROC

(

step11 NVARCHAR2,
v_name NVARCHAR2
)
AS

BEGIN

Insert Into table123
(Vname, decision, Decision_Reason, Decision_Date, 
stepN)
Select Distinct Vname,decision_Reason,
Decision_Date, stepN From demoTest123_history
Where  Vname= v_name And QUEUE_NAME=step11 
ORDER BY DECISION_DATE;

commit;

END;
oracle plsql insert procedure language
1个回答
0
投票

其中Vname=v_name并且QUEUE_NAME=step11。

你没有给变量分配任何值,因此查询没有任何返回。要么在块中赋值,要么将其作为IN参数传递,然后在执行存储过程时传递该值。

EXECUTE DEMO_PROC(v_name ==> 'value', queue_name ==> 'value')

另外,使用 ORDER BYINSERT INTO..SELECT 语句是没有意义的,因为行不是以任何特定的顺序存储的。删除ORDER BY。

© www.soinside.com 2019 - 2024. All rights reserved.