Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不确定如何为SQL命令指定数据类型_Sql_Oracle - Fatal编程技术网

不确定如何为SQL命令指定数据类型

不确定如何为SQL命令指定数据类型,sql,oracle,Sql,Oracle,我正试图在SQL Workshop中创建一条语句 不确定错误是什么,我在社区反馈后尝试了一些调整,但问题似乎在于创建表?不太确定 CREATE TABLE CUSTOMER ( Customer_ID INT PRIMARY KEY, Customer_Name VARCHAR2(25), Customer_Age, Customer_City VARCHAR2(20) ); INSERT INTO CUSTOMER (Customer_ID,Customer_Name,Custom

我正试图在SQL Workshop中创建一条语句

不确定错误是什么,我在社区反馈后尝试了一些调整,但问题似乎在于创建表?不太确定



CREATE TABLE CUSTOMER 

(
Customer_ID INT PRIMARY KEY,
Customer_Name VARCHAR2(25),
Customer_Age,
Customer_City VARCHAR2(20)

);

INSERT INTO CUSTOMER (Customer_ID,Customer_Name,Customer_Age,Customer_City )
SELECT 1, 'Simon Li',21,'New York' FROM DUAL UNION ALL 
SELECT 2, 'Richard Andrew',34,'San Diego' FROM DUAL UNION ALL 
SELECT 3, 'Catherine Wong',34,'Tuscon' FROM DUAL UNION ALL 
SELECT 4, 'Marie',28,'Tuscon' FROM DUAL UNION ALL 
SELECT 5, 'Bob Richard',27,'San Diego' FROM DUAL UNION ALL 

错误日志/结果

ORA-00922: missing or invalid option
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. Customer_ID INT PRIMARY KEY,
4. Customer_Name VARCHAR2(25),
5. Customer_Age,
6. Customer_City VARCHAR2(20)
7. );

确保为客户年龄指定数据类型

要在oracle中插入多行,请执行以下操作:

INSERT INTO CUSTOMER(Customer_ID,Customer_Name,Customer_Age,Customer_City )
SELECT 1,'Simon Li',21,'New York ' FROM DUAL UNION ALL
SELECT 2,'Richard Andrew',34,'San Diego' FROM DUAL UNION ALL
 ...
SELECT 5,'Bob Richard',27,'San Diego'
  • 字符串使用'。用于区分大小写并带有空格、奇怪字符等的列名

  • 不能多次使用VALUES关键字。请合并从dual中选择常量的所有查询

如果您的id使用序列,您可能需要更多类似于:

INSERT INTO CUSTOMER(Customer_ID,Customer_Name,Customer_Age,Customer_City )
SELECT idseq.nextval, a, b, c FROM(
  SELECT 'Simon Li' AS A,21 AS B,'New York ' AS C FROM DUAL UNION ALL
  SELECT 'Richard Andrew',34,'San Diego' FROM DUAL UNION ALL
 ...
  SELECT 'Bob Richard',27,'San Diego'
)X

将多行插入表的方法之一如下所示

 INSERT ALL
      INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
      INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
      INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
    SELECT * FROM dual;
就你而言

INSERT ALL
      INTO CUSTOMER (Customer_ID,Customer_Name,Customer_Age,Customer_City ) VALUES (1,'Simon Li',21,'New York')
      INTO CUSTOMER (Customer_ID,Customer_Name,Customer_Age,Customer_City ) VALUES (2,'Richard Andrew',34,'San Diego')
      INTO CUSTOMER (Customer_ID,Customer_Name,Customer_Age,Customer_City ) VALUES (3,'Catherine Wong',34,'Tuscon')
      INTO CUSTOMER (Customer_ID,Customer_Name,Customer_Age,Customer_City ) VALUES (4,'Marie',28,'Tuscon')
      INTO CUSTOMER (Customer_ID,Customer_Name,Customer_Age,Customer_City ) VALUES (5,'Bob Richard',27,'San Diego')
    SELECT * FROM dual;
此外,还缺少列Customer_Age的数据类型,Age最多为3位数字,因此我们可以将其声明为 数字(3)


插入末尾的分号丢失,输入错误?对Oracle中的字符串使用撇号,而不是双引号。对字符串文字使用单引号,例如
“Simon Li”
(双引号用于分隔标识符,例如奇数列名,如
“奇数列名…”。。。?"
。将客户年龄指定为int等。正如@CaiusJard所说,
customer\u age
需要一个数据类型。当您解决了这个问题后,您的
insert
不能以
union all
结尾。什么是DUAL?它是要复制的标识符?长话短说,不像在其他数据库中,可以说
选择1
来获得一个常量值作为结果集,在Oracle中,您必须始终从某个表中进行选择。Dual是一个包含一行和一列的表,称为dummy。人们从未实际选择Dual的内容,但如果您想要一行常量,如您的姓名、城市等,则从Dual中进行选择,因为您必须进行选择从某物中选择并从一个有一行的表中选择意味着你只能得到一行值。如果你在dual中插入另一行,你可能会把DBA的一天搞得一团糟。开玩笑的。不要真的这样做,事情会变得一团糟,因为人们期望它有一行。如果它有更多行,这样的查询将生成太多(重复)行并因主键冲突而失败等。但是思考一下它为什么工作以及后果是什么是有趣的,甚至可能是有帮助的:)嗯,我仍然在第500+行遇到相同的关于缺少或无效选项的错误,然后在我创建表时引用,但没有显示任何错误的特定行。是的,无需添加;在每个statementOracle之后,SQL没有
字符。
CREATE TABLE CUSTOMER 

(
Customer_ID INT PRIMARY KEY,
Customer_Name VARCHAR2(25),
Customer_Age NUMBER(3),
Customer_City VARCHAR2(20)
);