Database SQL脚本中的变量

Database SQL脚本中的变量,database,oracle,variables,relational-database,Database,Oracle,Variables,Relational Database,我正在尝试创建一个脚本,该脚本接受来自用户的不同值,并将它们插入到数据库中。对于其中的两个值,HName和SubName,我想使用它们在数据库中搜索其对应的代码,然后将数据插入数据库。当我只使用一个变量时,我在另一个脚本中使用它,但我不能使用两个变量。我得到以下错误: Enter a line number: 1 Enter a description for the item: 5 lbs Enter an amount for the item: 30.49 Enter a Head

我正在尝试创建一个脚本,该脚本接受来自用户的不同值,并将它们插入到数据库中。对于其中的两个值,HName和SubName,我想使用它们在数据库中搜索其对应的代码,然后将数据插入数据库。当我只使用一个变量时,我在另一个脚本中使用它,但我不能使用两个变量。我得到以下错误:

Enter a line number:  1
Enter a description for the item:  5 lbs
Enter an amount for the item:  30.49
Enter a Head category for the item:  Grocery
old  13:        WHERE Name = '&HName';
new  13:        WHERE Name = 'Grocery';
old  22:        WHERE Name = '&SubName'
new  22:        WHERE Name = 'Meat'
old  28:                       VALUES (&ExpNum, &LineNum, '&Descr', &Amt, HCode, SCode);
new  28:                       VALUES (         1,          1, '5 lbs', 30.49, HCode, SCode);
    ACCEPT SubName PROMPT 'Enter a Sub Head category for the item:  ';
           *
ERROR at line 17:
ORA-06550: line 17, column 9:
PLS-00103: Encountered the symbol "SUBNAME" when expecting one of the
following:
:= . ( @ % ;
我试着把它们分成两个独立的DECLARE,BEGIN,END块,但是我仍然得到一个错误,我猜是因为我无法访问第二个块中的第一个变量。下面是我的剧本,如果有人能提供任何帮助/建议/提示,谢谢

ACCEPT ExpNum NUMBER PROMPT 'Enter an expense number:  ';

SELECT *
FROM EXPDET
WHERE ExpNum = &ExpNum;


ACCEPT LineNum NUMBER PROMPT 'Enter a line number:  ';
ACCEPT Descr PROMPT 'Enter a description for the item:  ';
ACCEPT Amt PROMPT 'Enter an amount for the item:  ';
ACCEPT HName PROMPT 'Enter a Head category for the item:  ';

DECLARE
    HeadCode NUMBER;
    HCode NUMBER;

    SubCode NUMBER;
    SCode NUMBER;


BEGIN
    SELECT Code
    INTO HeadCode
    FROM HEAD
    WHERE Name = '&HName';

    HCode := HeadCode;


    ACCEPT SubName PROMPT 'Enter a Sub Head category for the item:  ';

    SELECT SubCode
    INTO SubCode
    FROM SUBHEAD
    WHERE Name = '&SubName'
    AND HCode = HCode;

    SCode := SubCode;

    INSERT INTO EXPDET
    VALUES (&ExpNum, &LineNum, '&Descr', &Amt, HCode, SCode);

END;
/

我认为您不能用plsql代码编写sqlplus命令

将以下代码移出plsql块:

ACCEPT SubName PROMPT 'Enter a Sub Head category for the item:  ';

我知道怎么修了。我想错了,但谢谢你。在我运行脚本之后,它显示PL/SQL过程成功完成,但是如果我退出数据库并返回,我刚才添加的记录将被删除。你知道为什么会这样吗?