无法创建表

时间:2019-12-29 06:06:15

标签: oracle ddl sqldatatypes

我是SQL的新手,我想创建一个表。有时我成功创建表,有时失败。帮帮我,我找不到失败的地方。我总是收到此错误消息

import React, { useEffect, useState } from "react";
import * as d3 from "d3";

const SvgViewer = ({ nodesData, svgFilePath }) => {
  const [svgContainer, setSvgContainer] = useState(undefined);

  const showNodesOnSvg = nodes => {
    //this.setState({ objectLoading: false });
    //let nodesData = UnitMonitor.state.nodes;
    let svgDoc = svgContainer.contentDocument;
    let gTags = svgDoc.querySelectorAll("svg > g");
    let container = null;
    if (gTags.length > 1) container = svgDoc.querySelector("g:nth-of-type(2)");
    else container = svgDoc.querySelector("g:nth-of-type(1)");
    let node = d3.select(container);
    nodesData.forEach(nodeData => {
      node
        .append("text")
        .attr("id", "node" + nodeData["id"])
        .attr("fill", "white")
        .attr("text-anchor", "middle")
        .attr("x", nodeData["positionX"])
        .attr("y", nodeData["positionY"])
        .attr("class", "clickable-node")
        .style("font-size", "8px")
        .style("position", "absolute")
        .style("cursor", "pointer")
        .style("display", "inline-block")
        .on("click", function() {
          clickHandler(nodeData["id"]);
        })
        .text("N/A" + " " + nodeData["symbol"]);
      let nodeCreated = d3.select(
        svgDoc.getElementById("node" + nodeData["id"])
      );
      nodeCreated
        .append("title")
        .attr("id", "title" + nodeData["id"])
        .text(" " + nodeData["tagCode"]);
    });
  };
  const clickHandler = nodeID => {
     History.ModalHistoryShow(nodeID); // i need call ModalHistoryShow() this way
  };
  useEffect(() => {
    const svg = document.querySelector("#svgobject");
    setSvgContainer(svg);
    svg.onload = () => {
      if (nodesData != null) {
        showNodesOnSvg();
      }
    };
  });

  return (
    <div className="unit-schema-container1" key={svgFilePath}>
      <object id="svgobject" type="image/svg+xml" data={svgFilePath}></object>
    </div>
  );
};
export default SvgViewer;

我的SQL语句如下:

ORA-00907: missing right parenthesis
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_190200", line 592
ORA-06512: at "SYS.DBMS_SYS_SQL", line 1658
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_190200", line 578
ORA-06512: at "APEX_190200.WWV_FLOW_DYNAMIC_EXEC", line 2057

3.             (
4.              CustomerID INT(2)
5.             ,CityID INT(2)
6.             ,CustomerName VARCHAR2(20)
7.             ,CONSTRAINT cu_pk PRIMARY KEY (CustomerID)

2 个答案:

答案 0 :(得分:1)

Oracle与MySQL不同(没有数据类型INT(n)):

CREATE TABLE Customer
(
         CustomerID INT --remove (2)  or change to NUMBER(2,0)
        ,CityID INT     --(2)
        ,CustomerName VARCHAR2(20)
        ,CONSTRAINT cu_pk PRIMARY KEY (CustomerID)
);

db<>fiddle demo

  

11.1.6 Numeric Type Attributes

     

MySQL支持扩展,可以选择在整数类型的基本关键字后的括号中指定整数数据类型的显示宽度。

答案 1 :(得分:0)

    oracle中的
  • INTINTEGER只是NUMBER数据类型的子类型。

  • INT/INTEGER仅接受整数,即1,5,13等。

  • Oracle支持INT作为 ANSI 标准。但是在oracle中,数字的主要数据类型是NUMBER

  • INT/INTEGER可以表示如下:

    NUMBER(*,0)
    

在这里,*表示允许的最大值。

  

根据oracle documentationINTEGER是   (-2 ^ 31)到(2 ^ 31)-1。

您应将INT用作数据类型,且不加任何精度。因此,在您的示例中,将(2)之后的INT删除,您就可以开始了。如果只需要两位数字,则使用NUMBER数据类型,如下所示:

NUMBER(2,0)

干杯!