小编Bon*_*ist的帖子

获取错误 - ORA-01858:找到了数字所在的非数字字符

我在下面的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)

oracle

10
推荐指数
1
解决办法
11万
查看次数

SQL错误:ORA-00918:列模糊定义

请帮我看看我在这里做错了什么:

从第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)
Error at Command Line : 5 Column : 10
Error report -
SQL Error: ORA-00918: column ambiguously defined
00918. 00000 -  "column ambiguously defined"
*Cause:    
*Action:
Run Code Online (Sandbox Code Playgroud)

sql oracle

4
推荐指数
1
解决办法
2534
查看次数

Oracle Listagg子查询

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 - "无效号码"

*原因:指定的号码无效.

*操作:指定有效数字.

sql oracle listagg

4
推荐指数
1
解决办法
4266
查看次数

关于where子句ORACLE的案例

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:缺少关键字

sql oracle case

3
推荐指数
1
解决办法
94
查看次数

如何使用 REGEXP_REPLACE 从每一端删除重复的逗号和修剪?

我需要将几个字段连接在一起,这些字段可能是也可能不是 null。我可能最终会得到一个字符串,如:',,c,,e,,' 我实际上想将其显示为 'c,e'。

我可以通过组合得到这个regexp_replacetrim

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 oracle regexp-replace

2
推荐指数
1
解决办法
2030
查看次数

使用注释在 postgres sql 中创建视图

我用 sql 语句在 postgres sql 中创建一个视图

CREATE OR REPLACE VIEW  {ViewName} as 
Select
.....
Run Code Online (Sandbox Code Playgroud)

我问有什么方法可以为视图中的列创建注释。创建视图后,在向列中添加注释时会生成错误:

错误:“{ViewName}”不是表、复合类型或外部表。

sql postgresql sql-view

2
推荐指数
1
解决办法
3075
查看次数

遇到符号

我是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 plsql procedure

2
推荐指数
1
解决办法
28
查看次数

使用Oracle Merge语句对列进行模糊定义的错误

我在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)

sql oracle

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

性能问题-集合会提高性能吗?

我遇到了性能问题,也许您可​​以帮忙。当我打开游标时,然后运行其他几个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 performance plsql query-optimization

-4
推荐指数
1
解决办法
63
查看次数