Database 获取要添加到数据库的信息的SQL脚本

Database 获取要添加到数据库的信息的SQL脚本,database,oracle,sqlplus,Database,Oracle,Sqlplus,我正在尝试创建一个swl脚本,它将提示用户输入将添加到数据库中的信息。我正在提示用户输入日期和店铺名称。在用户输入商店名称后,我希望运行一个查询,该查询将返回与该商店名称关联的代码,并将其分配给一个变量。当我运行此脚本时,在用户输入商店名称后,会发生以下情况: Enter the date of the expense:01-01-13 Enter the store name for which the expense was against:MetEd 12 我不确定我做错了什么,因为

我正在尝试创建一个swl脚本,它将提示用户输入将添加到数据库中的信息。我正在提示用户输入日期和店铺名称。在用户输入商店名称后,我希望运行一个查询,该查询将返回与该商店名称关联的代码,并将其分配给一个变量。当我运行此脚本时,在用户输入商店名称后,会发生以下情况:

Enter the date of the expense:01-01-13
Enter the store name for which the expense was against:MetEd
  12
我不确定我做错了什么,因为我还不熟悉编写SQL脚本。下面是我的脚本文件,非常感谢您的帮助/提示。非常感谢。顺便说一句,我喜欢有趣的sql plus/oracle

ACCEPT EDate PROMPT 'Enter the date of the expense:';
ACCEPT StoreName PROMPT 'Enter the store name for which the expense was against:';

DECLARE
    v_StoreCode VARCHAR;
BEGIN
    SELECT CODE
    INTO v_StoreCode
    FROM STORE
    WHERE STORENAME = '&StoreName';
END;

INSERT INTO EXPMAST (ExpNum, EDate, StoreCode)
   VALUES(seq_EXPMAST.nextval, to_date('&EDate','mm-dd-yy'), 'v_StoreCode');

12
是一个行号,因为系统会提示您输入。SQL*Plus希望在新行上有一个
/
来执行匿名块。你的剧本没有。因此出现了提示

你还有其他问题。我假定您希望插入检索到的代码值,但现在您正在插入字符串'v\u StoreCode'。所以你需要删除那些单引号

ACCEPT EDate PROMPT 'Enter the date of the expense:';
ACCEPT StoreName PROMPT 'Enter the store name for which the expense was against:';

DECLARE
    v_StoreCode VARCHAR;
BEGIN
    SELECT CODE
    INTO v_StoreCode
    FROM STORE
    WHERE STORENAME = '&StoreName';
END;
/

INSERT INTO EXPMAST (ExpNum, EDate, StoreCode)
   VALUES(seq_EXPMAST.nextval, to_date('&EDate','mm-dd-yy'), v_StoreCode); 

此外,您还可以使用INSERT。。。选择构造:

ACCEPT EDate PROMPT 'Enter the date of the expense:';
ACCEPT StoreName PROMPT 'Enter the store name for which the expense was against:';

INSERT INTO EXPMAST (ExpNum, EDate, StoreCode)
   SELECT seq_EXPMAST.nextval, to_date('&EDate','mm-dd-yy'), CODE
   FROM STORE
    WHERE STORENAME = '&StoreName';