AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / 问题

Perguntas[oracle](coding)

Martin Hope
Akash Jain
Asked: 2024-10-23 16:14:20 +0800 CST

Várias senhas para vários esquemas em uma única conexão

  • 5

Estou usando o DBeaver como meu gerenciador de banco de dados, estou tentando fazer uma conexão com o OracleDB com vários esquemas e cada esquema com seu próprio nome de usuário/senha.

Gostaria de saber se existe uma maneira de configurar esses vários nomes de usuário/senhas para esses esquemas em uma única conexão de banco de dados?

por exemplo: exemplo de conexão com o banco de dados

exemplo:
 Esquema
   sc1 - conecte-se a isto  
   sc2 - conecte-se a isso também
    .
    .
    .
   scn - e isso
oracle
  • 1 respostas
  • 23 Views
Martin Hope
velocity
Asked: 2024-10-20 04:48:17 +0800 CST

O processo de chamada de página do Oracle Apex não está funcionando

  • 5

Criei uma página de detalhes mestre. Em uma página mestre, criei um Processo de Página que chama um procedimento armazenado ao clicar no botão e salva um registro mestre em uma tabela, o que funciona bem como esperado. Em uma página de detalhes, criei um Processo de Página semelhante que chama um procedimento armazenado ao clicar no botão e esperava salvar os registros de detalhes em uma tabela, mas quando o botão é clicado, ele exibe a mensagem Linhas Atualizadas com Sucesso, mas na verdade nenhuma linha foi inserida na tabela. Não consegui descobrir por que o registro não foi inserido na tabela. O procedimento funciona bem quando chamado diretamente do banco de dados.

Aqui está meu Processo de Página - Opção Inserir Processo de página

Propriedades do Processo de Página

Propriedades do Processo de Página

Aqui está a página onde estou adicionando o registro de detalhes.

Adição de registro de detalhes

quando cliquei no botão Criar o registro não foi inserido na tabela.

depois de clicar no botão Criar

Espero que o registro seja inserido na tabela de detalhes.

oracle
  • 1 respostas
  • 18 Views
Martin Hope
Max
Asked: 2024-10-20 04:46:04 +0800 CST

O segmento de armazenamento de uma coluna XMLTYPE pode ser nomeado à vontade durante a criação?

  • 5

Por outro lado, quanto às colunas LOB, não consigo descobrir como dar o nome que desejo ao segmento de armazenamento criado para uma coluna XMLTYPE dentro do script CREATE TABLE. Isso é possível no Oracle 19c e alguém pode eventualmente postar um exemplo?

CREATE TABLE tab (
  doc   XMLTYPE
)
XMLTYPE COLUMN (doc) STORAGE CLOB { name the storage segment tab#doc_lob } 

oracle
  • 1 respostas
  • 17 Views
Martin Hope
bk_32
Asked: 2024-10-12 02:43:15 +0800 CST

Como encontrar uma tabela de exceções do Oracle?

  • 5

Recebi um script que continha isto:

alter table TABLE_1 add constraint pk_1 primary key(ID_1)
         using index
         tablespace schema1_ind
   exceptions into junk;

O problema é que quando executo, ele gera este erro: ORA-02445: exceptions table not found

Não estou muito familiarizado com tabelas de exceções, e há muito pouca informação que eu possa encontrar online. Encontrei este pedaço de documentação da Oracle, https://docs.oracle.com/cd/A58617_01/server.804/a58312/newch2h5.htm que diz isto:

ORA-02445: tabela de exceções não encontrada

Causa: A tabela de exceções declarada explícita ou implicitamente não existe.

Ação: Se o nome correto da tabela de exceções foi usado, crie a tabela e tente novamente o comando enable.

e também encontrei isso https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/EXCEPTIONS.html :

EXCEPTIONS contém informações sobre violações de restrições de integridade. Esta tabela é criada pelo script utlexcpt.sql.

Mas, estranhamente, quando executo um script diferente que também usa "lixo", ele é executado sem erro:

alter table TABLE_2 add constraint PK_2
    primary key(ID_2)
        using index tablespace schmea1_ind2
    storage (initial 8M NEXT 2M)
    exceptions into junk;

Todos esses scripts são executados em uma determinada ordem, e o de baixo é executado primeiro, sem problemas, vários outros scripts são executados e, então, o de cima tenta ser executado e falha.

O problema é que não sei como encontrar essa tabela de exceções 'junk'. Tentei executar o primeiro script sozinho e funcionou, mas depois, quando olhei em DBA_OBJECTS, não havia nada chamado 'junk'. Nada mesmo. Em nenhum lugar nada cria ou remove uma tabela chamada 'junk'.

Alguém pode explicar por que estou recebendo esse erro 'exceptions table not found'? Onde estão as exceptions tables, se não em dba_objects? Por que a primeira instrução falha, mas a segunda é bem-sucedida?

Qualquer conhecimento sobre tabelas de exceções seria útil, pois encontrei muito pouca documentação.

oracle
  • 1 respostas
  • 42 Views
Martin Hope
Searcherer
Asked: 2024-10-07 16:37:31 +0800 CST

Mensagens de erro ao tentar conectar ao banco de dados Oracle usando SQLcl

  • 5

Baixei o SQLcl, descompactei-o, configurei a variável de sistema PATH para apontar para seu \bin, mudei para o prompt de comando (Windows 10), mas nunca consegui me conectar ao meu banco de dados (11g) com ele. sql /nolog foi o máximo que consegui.

Primeiro, ele disse:

“Mensagem de erro = nenhum ocijdbc21 em java.library.path: …”,

Pesquisei e surpreendentemente descobri que ele precisa do "instant client" da Oracle (a Oracle diz algo como "basta descompactar e conectar"). Eu baixo e instalo o IC, executo e então outra mensagem de erro:

“Mensagem de erro = Versão incompatível de libocijdbc[Jdbc:211200230906, Jdbc-OCI:2115000”

Eu tentei outra ver. do IC (ver. 19), mas recebi “cannot find ..” ou algo assim, então voltei para a “versão incompatível” (21_15). Estou usando o SQLcl release 24.2.0.180.1721.

Você pode me ajudar com isso?

oracle
  • 2 respostas
  • 50 Views
Martin Hope
hud
Asked: 2024-10-04 14:35:47 +0800 CST

Obter registros para a mesma data da tabela no Oracle

  • 5

Tenho uma tabela onde desejo obter registros que MODIFIED_DATEsejam iguais à contagem de2

Por exemplo: se para job_id= 1234 houver 2 registros com data MODIFIED_DATE= 04-10-2024então ele deve filtrar esse registro.

Name                   Null?    Type           
---------------------- -------- -------------- 
JOB_PROGRESS_ID        NOT NULL NUMBER         
JOB_ID                          NUMBER         
STATUS_ID                       NUMBER         
HOTO_OFFERED_DATE               DATE           
HOTO_ACCEPTENCE_DATE            DATE           
LIT_ACCEPTENCE_DATE             DATE           
APPROVED_BY                     NVARCHAR2(200) 
APPROVED_DATE                   DATE           
REJECTED_BY                     NVARCHAR2(200) 
REJECTED_DATE                   DATE           
APPROV_REJECT_REMARK            NVARCHAR2(255)     
ABD_COMPLETED_LENGTH            NUMBER         
NE_SPAN_LENGTH                  NUMBER(10,4)   
CREATED_BY                      NVARCHAR2(200) 
CREATED_DATE           NOT NULL DATE           
MODIFIED_BY                     NVARCHAR2(200) 
MODIFIED_DATE                   DATE 
oracle
  • 2 respostas
  • 41 Views
Martin Hope
Ray
Asked: 2024-10-04 05:03:40 +0800 CST

Instrução Oracle PL SQL Insert - ORA-01007: variável não está na lista de seleção

  • 5

Tenho um script que copia registros que atendem a uma condição específica para uma tabela temporária. A tabela original é então truncada e os registros são copiados de volta.

A instrução usada para criar a tabela temporária é;

create table ARCHIVE_TMP as select * from ORIGINAL_TABLE where TIMESTAMP_UPDATED < '2017-10-04'

E a declaração para copiar os registros novamente é;

insert /*+ APPEND */ into ORIGINAL_TABLE select * from ARCHIVE_TMP

Quando a segunda linha é executada no script, ela gera a exceção ORA-01007: variable not in select list, mas se eu executar manualmente a segunda instrução, ela funciona como esperado.

Verifiquei se o usuário tem privilégios CREATE e INSERT, pois houve um problema anteriormente em que os privilégios foram atribuídos a uma função em vez do usuário.

Também tentei especificar os nomes das colunas na selectinstrução em vez de usar select *, mas isso não ajudou.

A seguir está o roteiro completo;

create or replace procedure TRUNCATE_EXPIRED_ARCHIVE_DATA
(
    p_retention_period      in number   := 84, 
)
as
begin
    declare
        cursor table_cursor is
            select      owner, table_name, column_name, data_type
            from        all_tab_columns
            where       table_name like '%!_A' escape '!'
                        and column_name like 'TIMESTAMP!_%' escape '!'
            group by    owner, table_name, column_name, data_type           
            order by    table_name, column_name;
        RetentionDt     date := null;
        ExpiredCount    number := 0;
        InsertedCount   number := 0;
        TableExists     number := 0;
        ExpiredSql      varchar2(500);
        SelectSql       varchar2(800);
        SqlStmt         varchar2(1300);
    begin
        RetentionDt := add_months(sysdate, p_retention_period * -1);
        for table_rec in table_cursor loop
            begin
                -- Check if there are any expired records...
                SelectSql := 'select count(*) from ' || table_rec.owner || '.' || table_rec.table_name;
                ExpiredSql := ' where ' || table_rec.column_name || ' < ''' || RetentionDt || '''';
                SqlStmt := SelectSql || ExpiredSql;
                execute immediate SqlStmt into ExpiredCount;
                if (ExpiredCount > 0) then
                    -- Drop the temporary table if it already exists...
                    SelectSql := 'select count(*) from tab where tname = ''ARCHIVE_TMP''';
                    execute immediate SelectSql into TableExists;
                    if (TableExists > 0) then
                        SelectSql := 'drop table REODT_PROD.ARCHIVE_TMP';
                        execute immediate SelectSql;
                    end if;
                    -- Transfer the records to be retained to the temporary table...
                    SelectSql := 'create table REODT_PROD.ARCHIVE_TMP as select * from ' || table_rec.owner || '.' || table_rec.table_name || ' where ' || table_rec.column_name || ' >= ''' || to_char(RetentionDt, 'YYYY-MM-DD') || '''';
                    execute immediate SelectSql;
                    InsertedCount := sql%rowcount;
                    commit;
                    if (InsertedCount > 0) then
                        SelectSql := 'truncate table ' || table_rec.owner || '.' || table_rec.table_name;
                        dbms_output.put_line('Truncate Table    : ' || SelectSql);
                        execute immediate SelectSql;
                        SelectSql := 'insert /*+ APPEND */ into ' || table_rec.owner || '.' || table_rec.table_name || ' select * from REODT_PROD.ARCHIVE_TMP';
                        execute immediate SelectSql into InsertedCount;
                        commit;
                    end if;
                end if;
            end;
        end loop;
    end;
end;
/
oracle
  • 1 respostas
  • 26 Views
Martin Hope
fleshwound
Asked: 2024-10-01 23:32:44 +0800 CST

erro de ambiguidade ao adicionar pivô à instrução SQL Oracle existente

  • 5
 SELECT
     *
     FROM
     (
     SELECT
    ordr.program,
    ordr.order_id,
    ordr.part_no,
    ordr.order_no,
    ordr.actual_start_date,
    ser.serial_no,
    oper.asgnd_machine_id,
    oper.time_stamp,
    oper.updt_userid,
    oper.oper_status,
    oper.oper_no ,
      
    CASE
      WHEN oper.oper_no IN ('1234') THEN 'paint_bike'  
 
    END AS oper_type
  
    FROM
    sfmfg.sfwid_order_desc ordr
    LEFT JOIN sfmfg.sfwid_serial_desc ser
    ON ordr.order_id = ser.order_id
    LEFT JOIN sfmfg.sfwid_oper_desc oper
     ON ordr.order_id = oper.order_id
     AND oper.step_key = -1
     AND ordr.program IN ('bike')
     AND oper.oper_no IN ('1234')
    WHERE
    ordr.actual_start_date > TO_DATE('08/01/2023', 'MM/DD/YYYY')
     AND ordr.part_no LIKE '123'
     AND ser.serial_no LIKE '123')

e quero adicionar esse pivô no final dele.

    PIVOT (
    MAX(asgnd_machine_id) AS asgnd_machine_id,
    MAX(time_stamp) AS time_stamp,
    MAX(updt_userid) AS updt_userid,
    MAX(oper_status) AS oper_status FOR oper_type IN ('bike_Cutting' AS bike_Cutting, 'bike_Prep' AS         bike_Prep,
       )

Estou tentando fazer o pivô funcionar, mas estou recebendo erros de definição ambígua de coluna para minha primeira instrução select quando adiciono um alias como este para a primeira instrução select

 SELECT 
    a1.program,
    a1.order_id,
    a1.customer_description,
    a1.stiffener_type,
    a1.mold_tool_no,
    a1.part_no,
    a1.order_no,
    a1.actual_start_date,
    a1.serial_no,
    a1.asgnd_machine_id,
    a1.time_stamp,
    a1.updt_userid,
    a1.oper_status,
    a1.plan_title,
    a1.oper_type  

me dá erros de identificador inválido

oracle
  • 1 respostas
  • 24 Views
Martin Hope
Efgrafich
Asked: 2024-09-30 21:16:37 +0800 CST

Acumulação de dados de consulta hierárquica Oracle SQL

  • 6

Preciso acumular dados em uma consulta hierárquica como esta:

select 
id, 
prior id as parent_id,
count * prior count  --need to be accumulated through whole hierarchy like sys_connect_by_path 
from table
start with id = 1
connect by prior id = parent_id

Exceto que eu só posso acessar a linha anterior, então não vai funcionar corretamente. E eu não posso usar o alias definido na SELECTcláusula atual para a linha anterior:

select 
id, 
prior id as parent_id,
count,
(count * prior whole_count) as count_product --not allowed to do this :(
from table
start with id = 1
connect by prior id = parent_id

O que estou esquecendo? SYS_CONNECT_BY_PATHfazer exatamente o que preciso (exceto concatenação em vez de multiplicação), então deve ser possível. Posso fazer isso usando WITHcláusula, mas por algum motivo é extremamente lento, tipo meio segundo para CONNECT_BYvs ~20 para WITH.

Saída esperada:

EU IA ID_PARENTE CONTAR CONTAGEM_PRODUTO
1 nulo 1 1
2 1 2 2
3 2 3 6
4 3 4 24
5 4 5 120
6 5 6 720

Fiddle usando cláusula WITH (de MT0)

oracle
  • 3 respostas
  • 38 Views
Martin Hope
Simon
Asked: 2024-09-25 23:09:07 +0800 CST

O script plsql está gerando 'ERROR na linha 1 DECLARE', não vejo o motivo

  • 5

Boa tarde comunidade,

Tenho um script PLSQL executado no ORACLE 19 que está exibindo um erro que não entendo.

O script descarta qualquer índice existente antes de recriá-los. Os objetos são definidos em uma lista de tipo-off para evitar repetição de instruções

  • remover um índice inexistente está OK (basta capturar a exceção e continuar)
  • criar um índice que está falhando deve continuar a criar os índices restantes até o fim

Meu script PLSQL é

set serveroutput on;
WHENEVER SQLERROR EXIT SQL.SQLCODE;

DECLARE
    index_not_exists EXCEPTION;
    table_not_exists EXCEPTION;
    PRAGMA EXCEPTION_INIT (index_not_exists, -1418);
    PRAGMA EXCEPTION_INIT (table_not_exists, -942);

    TYPE ind_list IS TABLE OF VARCHAR(100) NOT NULL;
    ind_to_drop ind_list := ind_list('sst_ind1', 'sst_ind2');
    /* first index is wrong because col0 does not exist */
    ind_to_create ind_list := ind_list('create index sst_ind1 on sst_table(col0)', 'create index sst_ind2 on sst_table(col2)');

    sql_to_exec varchar(200);
    is_all_index_created boolean := TRUE;

BEGIN
    BEGIN
        EXECUTE IMMEDIATE 'drop table sst_table cascade constraints purge';
    EXCEPTION
        WHEN table_not_exists THEN
        NULL;
    END;

    EXECUTE IMMEDIATE 'create table sst_table (col1 number, col2 number)';
    EXECUTE IMMEDIATE 'create index sst_ind1 on sst_table (col1)';
    EXECUTE IMMEDIATE 'create index sst_ind2 on sst_table (col2)';

    FOR l_index IN ind_to_drop.FIRST..ind_to_drop.LAST LOOP
        BEGIN
            sql_to_exec := 'drop index ' || ind_to_drop(l_index);
            dbms_output.put_line(sql_to_exec);
            EXECUTE IMMEDIATE sql_to_exec;
        EXCEPTION
            WHEN index_not_exists THEN
                dbms_output.put_line('no index ' || ind_to_drop(l_index));
        END;
    END LOOP;

    FOR l_index IN ind_to_create.FIRST..ind_to_create.LAST LOOP
        BEGIN
            dbms_output.put_line(ind_to_create(l_index));
            EXECUTE IMMEDIATE ind_to_create(l_index);
        EXCEPTION
            WHEN OTHERS THEN
                dbms_output.put_line('ERROR WITH ' || ind_to_create(l_index));
                is_all_index_created := FALSE;
        END;
    END LOOP;

    IF NOT is_all_index_created THEN
        RAISE_APPLICATION_ERROR(-20001, 'PROBLEM CREATING INDEX');
    END IF;

END;
/

exit

Quando executo meu script pelo sqplus tenho o ERRO abaixo não entendi

sqlplus xxxxx/yyyyy@zzzzzz @ubscls_6711.sql

SQL*Plus: Release 11.2.0.4.0 Production on Wed Sep 25 17:04:11 2024

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

drop index sst_ind1
drop index sst_ind2
create index sst_ind1 on sst_table(col0)
ERROR WITH create index sst_ind1 on sst_table(col0)
create index sst_ind2 on sst_table(col2)
DECLARE
*
ERROR at line 1:
ORA-20001: PROBLEM CREATING INDEX
ORA-06512: at line 49


Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Alguém pode me ajudar a consertar meu problema? Provavelmente é simples, mas não consigo encontrar o motivo.

Obrigado

oracle
  • 2 respostas
  • 35 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve