Oracel sql基础常见问题
1.1问题:日期函数的使用 ,无效月份的问题
1.2解决方案:需要更改
ALTER SESSION SET nls_date_language=‘american’;
2.1问题:如何将date类型更改为数字?
2.2解决方案:to_number(to_char(st.D_LASTMODIFY,‘YYYYMMDD’))
3.1问题:创建时有missing expression问题
3.2解决方案:
(1)缺失逗号,关键词等细节问题;
(2) 规范性: 需要注意的是:references 后关联的必须是主键;
4.1问题:自己修改了主机名导致dbeaver/PLSQLDE找不到数据库怎么办?
plsqlde 连接的数据库名: ip地址:1521/orcl(数据库的名字用自己命名的,我当初没有修改oracle默认的名称)
4.2 dbeaver 解决方案:根据csdn的博主们意见,修改oracle安装目录里的listener.ora 文件host主机名,解决
5.1问题:更新date提示报错
5.2 解决方案:(1)Oracle对大小写不敏感,所以在规定格式时不要重复之前已经有的命名;
6.1问题:(1)相关子查询的结果 single-row subquery returns more than one row
解决方案:返回多值结果,我们可以用IN,ANY, ALL, IN, or NOT IN 来接收结果
6.2问题: ( 2 ) missing expressions
解决方案:情况一,缺少关键词,比如select 后的内容 情况二,缺少来源,比如from后面。
1 - When you forget list of the column names in your SELECT statement. 2. When you omit the FROM clause of the SQL statement.
7.1 问题:(1)跟着文档操作误删除数据
解决方案:使用闪回
flashback TABLE employees TO timestamp to_timestamp(‘2021-03-13 14:00:00’,‘yyyy-mm-dd hh24:mi:ss’);
并且需要更改列移动
ALTER TABLE EMPLOYEES enable ROW movement;
8.1(1)问题:视图不适用此处
解决方案:多表插入数据时:SQL Error [1702] [42000]: ORA-01702: a view is not appropriate here
我们在查询视图的时候可以查得到内容,但是视图本身不负责存储数据。 解决方案: 删除视图,改为创建表
CREATE TABLE sal_history
AS SELECT e.EMPLOYEE_ID ,e.LAST_NAME ,e.SALARY
FROM EMPLOYEES e
WHERE e.DEPARTMENT_ID =3;
DROP VIEW sal_history;
CREATE TABLE mgr_history
AS SELECT e.EMPLOYEE_ID ,e.DEPARTMENT_ID ,e.SALARY
FROM EMPLOYEES e
WHERE e.DEPARTMENT_ID =3;
DROP VIEW mgr_history;O
8.2(2) ORA-00922: missing or invalid option i
问题原因:标点符号或者关键词的缺失
解决方案:下面举例 注意创建表是没有value的!!
8.3(3)问题:缺少右括号: ORA-00907: missing right parenthesis
8.4(4)问题:数据量是否足够充足?此张创建的外表没有导入数据,查询内容不便
8.5(5)问题: ①第 7 行, 第 2 列: PLS-00103: 出现符号 "X"在需要下列之一时::= . ( @ % ;符号 ":=在 "X"继续之前已插入。ORA-06550: 第 12 行, 第 2 列:PLS-00103: 出现符号 " 出现符号 "X"在需要下列之一时
解决方案:**不要用形式 x number (6) :=100 ;
请使用该格式 x number :=100 ;**
8.5.2 ② PLS-00103: 出现符号 ":"在需要下列之一时::= . ( @ % ;
解决方案:
**:=需要连在一起** 例如 *x:= x+10;*