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

Enter the date of the expense:01-01-13
Enter the store name for which the expense was against:MetEd
  12

我不确定自己在做什么错,因为我刚开始编写SQL脚本。 以下是我的脚本文件,感谢您的帮助/提示。 谢谢。 PS,我好玩的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');

===============>>#1 票数:1

12是行号,因为系统会提示您输入。 SQL * Plus期望在新行上使用/来执行匿名块。 您的脚本还没有。 因此提示。

您还有其他问题。 我假设您想插入CODE的检索值,但是现在您正在插入字符串'v_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 ... SELECT构造来整理代码:

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

  ask by Stc5097 translate from so

未解决问题?本站智能推荐:

2回复

如何从sql文件创建本地脱机sqlplus数据库?

我正在上数据库课,老师希望我们通过ssh连接到学校服务器上的oracle数据库设置,这非常令人沮丧。 她希望我们上交一个sql文件,该文件将创建所有必要的表,插入元组,运行某些选择命令,但我发现在一切正确之后,我发现很难获取包含所有内容的sql文件,但是我没有找到了一种针对服务器测试sql文件
1回复

如何登录到Oracle SQL Developer的HR数据库(密码已过期)?

登录SQL Developer随附的HR数据库时遇到一些麻烦: 首先,我像这样登录到SQL * Plus: 之后如何连接到HR数据库? 我试过了 但这是行不通的。
2回复

Oracle数据库中的日语字符无法正确显示

我最近用JA16SJIS字符集创建了一个Oracle DB。 然后,我尝试使用运行外部SQL文件的SQL * Plus插入一些包含日语字符的数据。 该文件以Shift-JIS编码(使用notepad ++,我可以在文件中正确看到日语字符)。 插入成功,但是当我选择数据(使用SQL
1回复

为什么oracle数据库不存储表值?

我正在学习数据库。 我已经在Windows中安装了Oracle 12c。 然后,我创建了一些表,已经读取了表的值并完成了一些基本操作。 我已经创建了大约12张桌子。 现在我的问题是,如果我要创建任何新表,则表明该表已成功创建。 并且数据插入正在工作。 现在,如果我要从sqlplus创
2回复

在sqlplus中为Oracle数据库假脱机

我有100个Oracle查询的.sql文件,因此假脱机将所有100个查询的结果写入一个文件,但是我希望为每个查询创建一个文件,对于100个查询应该有100个文件特定查询的结果。
1回复

如何在已创建的sqlplus中打开数据库

在SQL * plus中,我无法打开计算机中已经创建的数据库。 该错误表明“数据库尚未打开”,我想知道哪种命令适合打开数据库。
2回复

如何列出oracle数据库中sqlplus表中的所有数据?

这可能是一个非常基本的问题,但我找不到正确的命令。 我可以使用该命令在表中列出数据字段 如何使用sqlplus检查已在此表中插入的数据?
1回复

如何将数据从一个数据库复制到另一个数据库?

我在不同的服务器上有2个DB具有相同的模式。 我需要将表T中的数据复制到不同服务器和网络中的测试数据库中的同一个表T. 最简单的方法是什么? 我听说数据可以转储到平面文件而不是插入到数据库中。 它是如何工作的? 这可以使用sqlplus和oracle数据库来实现吗? 谢谢!
1回复

无法在Shell脚本中使用SQL * Plus命令更新数据

我的SQL * Plus命令中嵌入了一个选择查询,如下所示。 一切正常,并迅速将select查询的结果集写入temp.dat文件。 但是下面带有更新查询的命令似乎不起作用。 屏幕挂起,等待我输入而不是更新数据库。 当我通过按Ctrl + C终止并打开temp.dat文件时,我
3回复

如何从UNIX连接到Oracle数据库

我试图从我的UNIX计算机连接到oracle数据库。 我是脚本编写新手。 我知道如何浏览unix并编写基本脚本(read / display)并使用bash命令执行它们。 我也知道如何在Unix中查看变量(用户和系统)。 你能告诉我我需要做些什么来连接到Oracle数据库吗? 我如何使