标签: oracle11g

ORA-00905:创建表后缺少关键字

我正在开发sql developer(11g),我正在尝试创建这个表,但它不起作用,它说ORA-00905:缺少关键字

SQL代码

CREATE TABLE module(
    code_mod int NOT NULL,
    intitule varchar2(255) NOT NULL,
    charge_hor int NOT NULL,
    coef double NOT NULL,
    CONSTRAINT PK_module   PRIMARY KEY(code_mod) 
);
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g

0
推荐指数
1
解决办法
494
查看次数

如何在PL SQL中使用INSERT INTO SELECT添加日期?

对于我的作业,我需要创建一个包含一个过程的包,该过程从表dwdimartist中删除所有记录,然后用表格艺术家的所有记录填充表格,并添加一个具有今天日期的字段.

这就是我创造的,它有效,但我不知道它是否具有足够的性能.使用循环遍历表艺术家中每条记录的游标是否更好?

CREATE OR REPLACE PACKAGE BODY dwh AS  

  PROCEDURE filldwh IS
    today_date DATE := SYSDATE;
  BEGIN
    DELETE FROM dwdimartist;

    INSERT INTO dwdimartist (artistkey, name) (SELECT artistid, name FROM artist);
    UPDATE dwdimartist SET added = today_date;
  END filldwh;
END dwh;
Run Code Online (Sandbox Code Playgroud)

plsql oracle11g oracle-sqldeveloper

0
推荐指数
1
解决办法
393
查看次数

Oracle - 如何在视图上执行左连接?

如何使用Oracle上的左连接创建视图?

我可以使用此语句创建连接表

select * from concert_copy c left join event_copy e on c.concert_id=e.concert_id;
Run Code Online (Sandbox Code Playgroud)

但是当我使用这个语句创建视图时给了我错误"ORA-00957:重复列名"

create view concert_event as select * from concert_copy c left join event_copy e on c.concert_id=e.concert_id;
Run Code Online (Sandbox Code Playgroud)

oracle oracle11g create-view

0
推荐指数
1
解决办法
918
查看次数

修剪后不删除尾部空间

我运行此查询:

select trim(utl_raw.cast_to_varchar2((nlssort(d.det_entete, 'nls_sort=binary_ai')))) entete,
length(trim(utl_raw.cast_to_varchar2((nlssort(d.det_entete, 'nls_sort=binary_ai'))))) nb 
from details_param_import d join param_import_table p on d.param_code = p.param_code;
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此处输入图片说明

那么如何删除尾随空间呢?

oracle oracle11g oracle11gr2

0
推荐指数
1
解决办法
405
查看次数

PL/SQL - 找不到我的局部变量

我现在很困惑; 我正在编写一个脚本来查找用户正在进行的所有角色.这是一项正在进行中的工作,由于我对PLSQL缺乏了解,如果你知道我的意思,那么进展并不是很多.

-- Declaration of Table Type
create or replace TYPE TEST 
AS TABLE OF VARCHAR(30);

-- Function here
create or replace FUNCTION FINDPARENTS 
(
  ROLENAME IN VARCHAR2 
) 
    RETURN TEST 
    IS
    tt_t TEST;

BEGIN
    DECLARE
        results test;
        toadd test := TEST(ROLENAME);
        counter number;
        elements number:=1;
    BEGIN
        SELECT GRANTED_ROLE 
        BULK COLLECT INTO toadd 
        FROM DBA_ROLE_PRIVS 
        WHERE GRANTEE = rolename; 

        SELECT COUNT(*) 
        INTO ELEMENTS 
        FROM toadd; -- Error here.
    --(for i in 0 .. ELEMENTS) SELECT FINDPARENTS(ROLE_NAME) FROM DUAL UNION RESULT …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql oracle11g

0
推荐指数
1
解决办法
57
查看次数

Oracle查询使用like子句与当前星期几的记录

我在记录栏中有一个天数列表.我想查询该列以查看它是否包含使用LIKE关键字的当前星期几.该记录包含例如:

INTV
-----------------------
monday,tuesday,wednesday
Run Code Online (Sandbox Code Playgroud)

我想看看当天是否在INTV.因此,如果今天是星期一,我希望上面的行返回.

如果我硬编码一周中的某一天,它就可以了.例如,... WHERE intv LIKE '%monday%'.但是,当我尝试通过使用SYSDATE和使用to_char(sysdate, 'day') 它来抓住当天添加当天不起作用.

这是我到目前为止没有运气的尝试:

SELECT * FROM mytable where intv like '%' || to_char(sysdate, 'day') || '%';

SELECT * FROM mytable where intv like to_char(sysdate, 'day');

SELECT * FROM mytable where intv like to_char(sysdate, '%day%');
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle10g oracle11g

0
推荐指数
1
解决办法
55
查看次数

ORACLE-如果Column只包含String,则True为False

假设我有2列,第一列包含字母数字和字符混合,例如.abc12 $$,abc,123,re12.第二列仅包含数字,但长度不同.

我必须找到第一列是否只包含字母,第二列只包含9位数,然后是True,否则为False

你可以帮助我吗?

以下是您可以修改的查询

with temp(name) as (select 'abc' from dual
union select '123abc' from dual
union select '1abc3' from dual
union select 'abc3' from dual
union select 'ab3c' from dual)
select * from temp;
Run Code Online (Sandbox Code Playgroud)

regex sql oracle oracle11g

0
推荐指数
1
解决办法
122
查看次数

在Oracle中使用逗号分隔字符串

我们怎样才能转化123451,2,3,4,5.

我可以使用replace命令执行相反的操作,我可以用逗号替换逗号.但我无法做到这一点.你能帮忙吗?

提前致谢

sql oracle oracle11g oracle11gr2 listagg

0
推荐指数
1
解决办法
64
查看次数

如何加入才能找到这些结果?

表AA

table AA
ID  Date 
1   2018.01.21
2   2018.01.22
2   2018.05.27
2   2018.07.15


table BB
ID  Date 
1   2017.05.21
1   2017.08.27
1   2018.01.23
1   2018.02.15
2   2017.01.01
2   2017.05.31
2   2018.01.01
2   2018.01.25
2   2018.05.29
2   2018.09.30
Run Code Online (Sandbox Code Playgroud)

我想在ID列上加入这些表.目的是在表B中找到与表A中的最小日期相同或更晚的日期,每个id和日期(在每行的表A上).

我的意思是输出应该是

OUTPUT

1   2018.01.23
2   2018.01.25
2   2018.05.29
2   2018.09.30
Run Code Online (Sandbox Code Playgroud)

提前致谢

sql oracle join oracle11g greatest-n-per-group

0
推荐指数
1
解决办法
61
查看次数

为什么创建表显示ORA-00957:重复的列名

有谁知道为什么这个查询语句在此查询上运行得很好,但是当我在同一个查询语句前添加cte时,会出现此错误:

SQL错误:ORA-00957:列名重复)

CREATE TABLE t1 AS 
SELECT * 
 FROM NS_F3 
 LEFT JOIN NS_FA2 
 ON NS_F3.PI_CANDIDATE_NUM = NS_FA2.PI_CANDIDATE_NUM 
 WHERE REGEXP_LIKE(NS_F3.TITLE, 'intern($|ship|[^a-z])', 'i');
Run Code Online (Sandbox Code Playgroud)

oracle oracle11g

0
推荐指数
1
解决办法
325
查看次数