我在下面的SQL中收到错误:
ORA-01858:找到了一个非数字字符,其中包含数字
SELECT c.contract_num,
CASE
WHEN ( MAX (TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD'))
- MIN (TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD')))
/ COUNT (c.event_occurrence) < 32
THEN
'Monthly'
WHEN ( MAX (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD'))
- MIN (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD')))
/ COUNT (c.event_occurrence) >= 32
AND ( MAX (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD'))
- MIN (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD')))
/ COUNT (c.event_occurrence) < 91
THEN
'Quarterley'
ELSE
'Yearly'
END
FROM ps_ca_bp_events c
GROUP …Run Code Online (Sandbox Code Playgroud) 请帮我看看我在这里做错了什么:
从第1行开始出错:命令中为1 -
CREATE VIEW VW_ROUTE AS
SELECT ROUTE_NAME
, FARE
, DESTINATION
, ROUTE_ID
, STOP_NAME
, TERMINUS
, NUMBER_OF_STOPS
FROM STOPS S
LEFT JOIN ROUTE R
ON S.ROUTE_ID = R.ROUTE_ID
WHERE NUMBER_OF_STOPS > ('1')
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Error at Command Line : 5 Column : 10 Error report - SQL Error: ORA-00918: column ambiguously defined 00918. 00000 - "column ambiguously defined" *Cause: *Action:
SELECT e.pem_id AS id,
e.pem_subject AS subject,
e.pem_content AS content,
e.pem_sent_date AS sentdate,
e.pem_ref_id AS referenceid,
e.pem_from_usr_id AS userid,
NULL AS misc,
(listagg(str.str_us_id, ', ') within GROUP(ORDER BY '') AS attachedusers FROM
proj_email_usrs eu LEFT OUTER JOIN st_register str ON
eu.pmu_str_id = str.str_id WHERE eu.pmu_pem_id = '26' GROUP BY '')
FROM proj_email e
WHERE e.pem_prj_id = '33'
AND e.pmu_pem_id = '26'
AND e.pem_status = 'S';
Run Code Online (Sandbox Code Playgroud)
它正在抛出错误
ORA-01722:无效的号码
01722. 00000 - "无效号码"
*原因:指定的号码无效.
*操作:指定有效数字.
SELECT *
FROM (
SELECT P.PC_ID, PC.PC, P.BLOK_ID, B.BLOK, B.ID_MATERIAL, M.MATERIAL, M.NO_MATERIAL, P.START_DTTM, TO_CHAR(P.START_DTTM,'yyyy-mm-dd') DATE_PERENCANAAN
FROM UTSG_PERENCANAAN P
INNER JOIN UTSG_PC PC
ON P.PC_ID = PC.ID_PC
INNER JOIN UTSG_BLOK B
ON P.BLOK_ID = B.ID_BLOK
LEFT JOIN UTSG_MATERIAL M
ON B.ID_MATERIAL = M.ID_MATERIAL
WHERE P.NO_LAMBUNG = '341'
AND P.LOKASI_ID = '2'
AND P.START_DTTM < TO_DATE('2019-01-09 23:40:52', 'yyyy-mm-dd hh24:mi:ss')
ORDER BY P.START_DTTM DESC
)
WHERE
CASE
WHEN BLOK = 'DD11'
THEN ROWNUM <= 1
ELSE
THEN ROWNUM <= 2
END
Run Code Online (Sandbox Code Playgroud)
我有这样的查询,在where子句总是显示的情况下
错误ORA-00905:缺少关键字
我需要将几个字段连接在一起,这些字段可能是也可能不是 null。我可能最终会得到一个字符串,如:',,c,,e,,' 我实际上想将其显示为 'c,e'。
我可以通过组合得到这个regexp_replace和trim:
with sd as (select 'a,b,c' str from dual union all
select 'a' str from dual union all
select null str from dual union all
select 'a,,,d' from dual union all
select 'a,,,,e,f,,'from dual union all
select ',,,d,,f,g,,'from dual)
select str,
regexp_replace(str, '(,)+', '\1') new_str,
trim(both ',' from regexp_replace(str, '(,)+', '\1')) trimmed_new_str
from sd;
STR NEW_STR TRIMMED_NEW_STR
----------- ----------- ---------------
a,b,c a,b,c a,b,c
a a a
a,,,d a,d a,d
a,,,,e,f,, a,e,f, a,e,f …Run Code Online (Sandbox Code Playgroud) 我用 sql 语句在 postgres sql 中创建一个视图
CREATE OR REPLACE VIEW {ViewName} as
Select
.....
Run Code Online (Sandbox Code Playgroud)
我问有什么方法可以为视图中的列创建注释。创建视图后,在向列中添加注释时会生成错误:
错误:“{ViewName}”不是表、复合类型或外部表。
我是oracle pl / sql的新手。我创建了新的程序包过程列表,然后想在单独的块中实现每个过程。这是我现在想要创建的过程列表,它仅仅是一个。
create or replace package listProcedures is
procedure bss_claim12
( o_claim_id out number,
o_error_code out varchar2,
o_error_msg out varchar2,
i_card_number varchar2,
i_phone_number varchar2,
i_product_id number,
i_summ_loan number,
client_code number,
mfo varchar2
);
Run Code Online (Sandbox Code Playgroud)
然后我想创建它的主体,但出现以下错误。PACKAGE BODY IBS.LISTPROCEDURES的编译错误
错误:PLS-00103:在预期以下情况之一时遇到符号“文件结尾”:
create or replace package body ibs.listprocedures is
procedure bss_claim12
( o_claim_id out number,
o_error_code out varchar2,
o_error_msg out varchar2,
i_card_number varchar2,
i_phone_number varchar2,
i_product_id number,
i_summ_loan number,
client_code number,
mfo varchar2
) is
begin
dbms_output.put_line(o_claim_id);
dbms_output.put_line(o_error_msg);
dbms_output.put_line(client_code);
end bss_claim12;
Run Code Online (Sandbox Code Playgroud)
我应该在此程序的主体中做些什么才能使其正常运行。
我在Oracle SQL中遇到此查询的问题.
Errore alla riga del comando:18 Colonna:42
报告错误:
Errore SQL:ORA-00918:列模糊定义
00918. 00000 - "列模糊定义"
*原因:
*操作:
这是查询,但我没有看到明确定义的列:
MERGE INTO T_HPSM_CM_UBIS H USING
(SELECT A.itam_relevant_appl_code as ret,
b.service_id,
b.it_service,
b.itam_user_id,
b.itam_last_name,
b.itam_first_name,
b.itrm_user_id,
b.itam_first_name,
b.itam_last_name
FROM
(SELECT f.itam_relevant_appl_code
FROM T_HPSM_CM_UBIS f
GROUP BY f.itam_relevant_appl_code
) A,
t_cp_list_itam b
WHERE A.itam_relevant_appl_code = b.hvb_appl_code
) s ON (H.itam_relevant_appl_code = s.ret)
WHEN MATCHED THEN
UPDATE SET H.service_id = s.service_id, H.it_service = s.it_service;
Run Code Online (Sandbox Code Playgroud) 我遇到了性能问题,也许您可以帮忙。当我打开游标时,然后运行其他几个SELECT语句以使用游标中的变量来检索值(请参见下文)。这似乎减慢了整个过程。我认为这是因为PL / SQL和SQL引擎之间的切换。使用表集合会有所帮助吗?但是,正如我所看到的,由于我需要来自不同表的不同列,因此我需要具有多个不同的集合,如何在一条记录中输出所有内容以返回结果集?
CREATE OR REPLACE procedure sp_test (in_input in number)
as
v_calc number;
v_calc_res number;
v1 number;
v2 number;
v3 number;
CURSOR C_test IS
select col1 from test where col1 = in_input;
begin
open c_test
loop
fetch c_test into v_calc;
select col1 into v1 from t1;
select col1 into v2 from t2;
select col1 into v3 from t3;
v_calc_res := v_calc * 5 * v1 * v2 * v3;
dbms_output.put_line(v_calc_res);
end loop;
end sp_test;
/
Run Code Online (Sandbox Code Playgroud) oracle ×8
sql ×6
plsql ×2
case ×1
listagg ×1
performance ×1
postgresql ×1
procedure ×1
sql-view ×1