我在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;
其中Vname=v_name并且QUEUE_NAME=step11。
你没有给变量分配任何值,因此查询没有任何返回。要么在块中赋值,要么将其作为IN参数传递,然后在执行存储过程时传递该值。
EXECUTE DEMO_PROC(v_name ==> 'value', queue_name ==> 'value')
另外,使用 ORDER BY
在 INSERT INTO..SELECT
语句是没有意义的,因为行不是以任何特定的顺序存储的。删除ORDER BY。