Database SQL脚本中的变量
我正在尝试创建一个脚本,该脚本接受来自用户的不同值,并将它们插入到数据库中。对于其中的两个值,HName和SubName,我想使用它们在数据库中搜索其对应的代码,然后将数据插入数据库。当我只使用一个变量时,我在另一个脚本中使用它,但我不能使用两个变量。我得到以下错误: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
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过程成功完成,但是如果我退出数据库并返回,我刚才添加的记录将被删除。你知道为什么会这样吗?