【问题标题】:Insert SQL command wrong character issue插入 SQL 命令错误字符问题
【发布时间】:2012-08-27 20:21:18
【问题描述】:

我在 Oracle 10g Express Edition 中有这部分代码:

CREATE TABLE SALARY (
   GRADE               number(1),
   LOSAL               number(4),
   HISAL               number(4));

   INSERT INTO SALARY VALUES (1,700,1200);
   INSERT INTO SALARY VALUES (2,1201,1400);
   INSERT INTO SALARY VALUES (3,1401,2000);
   INSERT INTO SALARY VALUES (4,2001,3000);
   INSERT INTO SALARY VALUES (5,3001,9999);

我想像 SQL 命令一样输入它,问题是当我点击运行按钮时,我收到以下消息:

ORA-00911: 无效字符

我检查了语法,但一切似乎都很好,有人发现有什么错误吗?

【问题讨论】:

    标签: sql insert oracle10g


    【解决方案1】:

    您需要在插入语句之后编写commit; 语句...希望它能解决您的问题。

    【讨论】:

      【解决方案2】:

      NUMBER(p) 这是一个精度为 p 且标度为 0 的定点数。等价于 NUMBER(p,0)

      一个数字在oracle中可以容纳的最大数字范围是1到38,这可能是你的错误问题..

      这可能对您有帮助... http://ss64.com/ora/syntax-datatypes.html

      【讨论】:

        【解决方案3】:

        我怀疑你想把整个东西放在一个匿名的 PL/SQL 块中并运行它,即我希望它应该工作,如果有错请纠正我

        BEGIN
        
            INSERT INTO SALARY VALUES (1,700,1200);
            INSERT INTO SALARY VALUES (2,1201,1400);
            INSERT INTO SALARY VALUES (3,1401,2000);
            INSERT INTO SALARY VALUES (4,2001,3000);
            INSERT INTO SALARY VALUES (5,3001,9999);
        
         END;
        

        【讨论】:

          【解决方案4】:

          您提到的是 Oracle Express。您是否使用 Web 前端(通过浏览器)来运行这些语句?

          如果是这样:网络前端确实不允许一次运行多个语句。

          使用 Oracle Express 的 Web 前端时,您需要分别运行每条语句。

          Oracle 的 SQL Developer 是免费的,并且作为 SQL 工具要好得多。或者使用 SQL*Plus 或使用现有的众多 SQL 客户端中的任何一个。

          【讨论】:

            【解决方案5】:

            当我尝试通过您的代码创建表并插入值时,它已成功完成。

            SQL> CREATE TABLE SALARY (
              2     GRADE               number(1),
              3     LOSAL               number(4),
              4     HISAL               number(4));
            
            Table created.
            
            SQL> 
            SQL>    INSERT INTO SALARY VALUES (1,700,1200);
            
            1 row created.
            
            SQL>    INSERT INTO SALARY VALUES (2,1201,1400);
            
            1 row created.
            
            SQL>    INSERT INTO SALARY VALUES (3,1401,2000);
            
            1 row created.
            
            SQL>    INSERT INTO SALARY VALUES (4,2001,3000);
            
            1 row created.
            
            SQL>    INSERT INTO SALARY VALUES (5,3001,9999);
            
            1 row created.
            

            请试一试看看

            【讨论】:

            • 我认为 OP 没有使用 sql*plus。
            • @JeffreyKemp 我在 sql*plus 中运行了以下命令,并且命令运行成功
            【解决方案6】:

            如果问题仍然存在,请尝试INSERT ALL 请参阅相关帖子Where's my invalid character (ORA-00911) 以及有关如何执行此操作的参考:http://psoug.org/snippet/INSERT-ALL_589.htm

            【讨论】:

              【解决方案7】:

              这部分代码由六个格式正确的语句组成,但它确实不是由一个格式正确的语句组成。您需要分别运行每个语句。 (顺便说一下,它抱怨的“无效字符”是前两个语句之间的分号;。它正在删除最后一个语句末尾的分号,因为它可以告诉它是语句的结尾,但它不会删除语句之间的分号,因为据它所知,它们位于一个大语句的中间。)

              【讨论】:

                【解决方案8】:

                将所有内容复制到记事本中,然后 从记事本复制它并再次将其粘贴到查询分析器中。 在记事本中粘贴将删除所有隐藏的特殊字符。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2022-08-18
                  • 1970-01-01
                  • 2012-01-03
                  • 1970-01-01
                  • 2019-02-13
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多