我正在开发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) 对于我的作业,我需要创建一个包含一个过程的包,该过程从表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) 如何使用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) 我运行此查询:
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)
结果如下:
那么如何删除尾随空间呢?
我现在很困惑; 我正在编写一个脚本来查找用户正在进行的所有角色.这是一项正在进行中的工作,由于我对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) 我在记录栏中有一个天数列表.我想查询该列以查看它是否包含使用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) 假设我有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) 我们怎样才能转化12345为1,2,3,4,5.
我可以使用replace命令执行相反的操作,我可以用逗号替换逗号.但我无法做到这一点.你能帮忙吗?
提前致谢
表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)
提前致谢
有谁知道为什么这个查询语句在此查询上运行得很好,但是当我在同一个查询语句前添加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) oracle11g ×10
oracle ×9
sql ×6
oracle11gr2 ×2
plsql ×2
create-view ×1
join ×1
listagg ×1
oracle10g ×1
regex ×1