2014-04-21 129 views
0

我想创建一个接受用户的不同值并将它们插入到数据库中的脚本。对于其中两个值HName和SubName,我想使用这些来搜索数据库中的相应代码,然后将数据插入到数据库中。当我用一个变量做了它时,我得到了这个在不同的脚本中工作,但我无法使它与两个一起工作。我得到以下错误:SQL脚本中的变量

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,开始,结束块,但因为我不能在第二次访问的第一个变量,然后我仍然得到其即时猜测是错误的一。以下是我的脚本,如果有人可以请给任何帮助/建议/提示谢谢。

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; 
/

回答

0

我认为你不能在plsql的代码编写的sqlplus命令

移动下面的代码了PLSQL块:

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

我想通了,如何解决它。我在想这个错,但是谢谢你。在运行脚本后,它说PL/SQL过程已成功完成,但如果我退出我的数据库并返回,我刚刚添加的记录被删除。你知道为什么发生这种情况吗? – Stc5097

+0

添加提交; INSERT语句后的命令。 –