Oracle 从PL/SQL块中的CASE语句调用过程:面临问题
我创建了下面的块,询问用户选择选项。 然后,每个选项都调用存储过程来处理接收到的信息(无论是要显示的余额还是要针对特定id进行的存款、取款)Oracle 从PL/SQL块中的CASE语句调用过程:面临问题,oracle,plsql,case,block,procedure,Oracle,Plsql,Case,Block,Procedure,我创建了下面的块,询问用户选择选项。 然后,每个选项都调用存储过程来处理接收到的信息(无论是要显示的余额还是要针对特定id进行的存款、取款) `set serveroutput on DECLARE V_CHOICE NUMBER(1) := &V_CHOICE; ID NUMBER(5) := &ID; AMT NUMBER(20) := &AMT; BEGIN CASE V_CHOICE WHEN 1 THEN E
`set serveroutput on
DECLARE
V_CHOICE NUMBER(1) := &V_CHOICE;
ID NUMBER(5) := &ID;
AMT NUMBER(20) := &AMT;
BEGIN
CASE V_CHOICE
WHEN 1 THEN
EXEC SHOW_BALANCE(ID);
WHEN 2 THEN
EXEC DEPOSITS (ID ,AMT);
WHEN 3 THEN
EXEC WITHDRAWAL (ID, AMT);
ELSE
DBMS_OUTPUT.PUT_LINE ('Invalid choice');
END CASE;
END;
/`
这些过程中的每一个都可以通过传递各自的参数来单独执行,但是,在使用case语句时,我得到了PL/SQL编译错误
`set serveroutput on
DECLARE
V_CHOICE NUMBER(1) := &V_CHOICE;
ID NUMBER(5) := &ID;
AMT NUMBER(20) := &AMT;
BEGIN
CASE V_CHOICE
WHEN 1 THEN
EXEC SHOW_BALANCE(ID);
WHEN 2 THEN
EXEC DEPOSITS (ID ,AMT);
WHEN 3 THEN
EXEC WITHDRAWAL (ID, AMT);
ELSE
DBMS_OUTPUT.PUT_LINE ('Invalid choice');
END CASE;
END;
/`
Error report:
ORA-06550: line 8, column 6:
PLS-00103: Encountered the symbol "SHOW_BALANCE" when expecting one of the following:
:= . ( @ % ;
The symbol ":=" was substituted for "SHOW_BALANCE" to continue.
请告知PL/SQL块有什么问题。您需要删除
EXEC
:
`set serveroutput on
DECLARE
V_CHOICE NUMBER(1) := &V_CHOICE;
ID NUMBER(5) := &ID;
AMT NUMBER(20) := &AMT;
BEGIN
CASE V_CHOICE
WHEN 1 THEN
EXEC SHOW_BALANCE(ID);
WHEN 2 THEN
EXEC DEPOSITS (ID ,AMT);
WHEN 3 THEN
EXEC WITHDRAWAL (ID, AMT);
ELSE
DBMS_OUTPUT.PUT_LINE ('Invalid choice');
END CASE;
END;
/`
set serveroutput on;
DECLARE
V_CHOICE NUMBER(1) := &V_CHOICE;
ID NUMBER(5) := &ID;
AMT NUMBER(20) := &AMT;
BEGIN
CASE V_CHOICE
WHEN 1 THEN SHOW_BALANCE(ID);
WHEN 2 THEN DEPOSITS(ID ,AMT);
WHEN 3 THEN WITHDRAWAL(ID, AMT);
ELSE DBMS_OUTPUT.PUT_LINE('Invalid choice');
END CASE;
END;
/
EXEC是一个SQL*Plus命令,不是PL/SQL命令。非常感谢。@ChinmayDeshpande