AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题

问题[oracle](coding)

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

单一连接中多个模式的多个密码

  • 5

我正在使用 DBeaver 作为我的数据库管理器,我正在尝试与具有多个模式的 oracleDB 建立连接,并且每个模式都有自己的用户名/密码。

我想知道是否有办法在单个数据库连接中为这些模式配置多个用户名/密码?

例如:连接到数据库示例

例子:
 架构
   sc1-连接到此  
   sc2-也连接到此
    。
    。
    。
   scn-还有这个
oracle
  • 1 个回答
  • 23 Views
Martin Hope
velocity
Asked: 2024-10-20 04:48:17 +0800 CST

调用存储过程的 Oracle Apex 页面进程不起作用

  • 5

我创建了一个主从页面。在主页面上,我创建了一个页面进程,它在单击按钮时调用存储过程并将主记录保存在表中,该过程按预期正常工作。在详细信息页面上,我创建了类似的页面进程,它在单击按钮时调用存储过程并期望将详细信息记录保存在表中,但单击按钮时会显示消息“行已成功更新”,但实际上没有行插入表中。无法弄清楚为什么记录未插入表中。直接从数据库调用时,该过程工作正常。

这是我的页面流程-插入选项 页面流程

页面流程属性

页面流程属性

这是我添加详细记录的页面。

详细记录添加

当我单击“创建”按钮时,记录并未插入到表中。

单击“创建”按钮后

我希望将记录插入到详细表中。

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

XMLTYPE 列的存储段在创建时可以随意命名吗?

  • 5

相反,对于 LOB 列,我找不到如何在 CREATE TABLE 脚本中为 XMLTYPE 列创建的存储段指定我想要的名称。这在 Oracle 19c 上可行吗?有人最终可以发布一个示例吗?

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

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

如何查找 Oracle 异常表?

  • 5

我得到了一个包含以下内容的脚本:

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

问题是,当我运行它时,它会引发此错误: ORA-02445: exceptions table not found

我对异常表不太熟悉,在网上能找到的信息也很少。我在 Oracle 上找到了这份文档,https://docs.oracle.com/cd/A58617_01/server.804/a58312/newch2h5.htm,其中有以下内容:

ORA-02445: 未找到异常表

原因:明确或隐含声明的异常表不存在。

操作:如果使用了正确的异常表名,则创建该表并重试启用命令。

我还发现了这个https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/EXCEPTIONS.html:

EXCEPTIONS 包含有关违反完整性约束的信息。此表由 utlexcpt.sql 脚本创建。

但是,非常奇怪的是,当我运行同样使用“垃圾”的不同脚本时,它运行时没有错误:

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;

这些脚本都按照一定的顺序运行,最下面的脚本首先运行,成功运行而没有问题,然后运行一堆其他脚本,最后尝试运行最上面的脚本并失败。

问题是,我不知道如何找到这个“垃圾”异常表。我尝试单独运行第一个脚本,它成功了,但之后当我查看 DBA_OBJECTS 时,没有找到任何名为“垃圾”的东西。什么都没有。任何地方都没有创建或删除名为“垃圾”的表。

有人能解释一下为什么我会收到“未找到异常表”错误吗?如果异常表不在 dba_objects 中,那么它在哪里?为什么第一个语句失败,而第二个语句成功?

任何有关异常表的知识都会有帮助,因为我发现的文档很少。

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

尝试使用 SQLcl 连接到 Oracle 数据库时出现错误消息

  • 5

我下载了 SQLcl,解压缩它,将 PATH 系统变量指向它的 \bin,切换到命令提示符(Windows 10),但仍然无法使用它连接到我的数据库(11g)。sql /nolog是我能做到的极限。

首先,它说:

“错误消息 = java.library.path 中没有 ocijdbc21:...”,

我搜索了一下,惊讶地发现它需要 Oracle 的“即时客户端”(Oracle 说了类似“只需解压并连接”之类的话)。我下载并安装了 IC,运行,然后又出现了另一个错误消息:

“错误消息 = libocijdbc 版本不兼容 [Jdbc:211200230906,Jdbc-OCI:2115000”

我尝试了另一个版本的 IC(版本 19),但收到“无法找到...”之类的提示,所以我切换回了“不兼容版本”(21_15)。我使用的是 SQLcl 版本 24.2.0.180.1721。

你能帮我吗?

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

从 Oracle 中的表中获取同一日期的记录

  • 5

我有一张表,我想在其中获取MODIFIED_DATE与计数相同的记录2

例如:如果job_id= 1234 中有2 条记录的日期为MODIFIED_DATE=04-10-2024则应该过滤该记录。

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 个回答
  • 41 Views
Martin Hope
Ray
Asked: 2024-10-04 05:03:40 +0800 CST

Oracle PL SQL 插入语句 - ORA-01007:变量不在选择列表中

  • 5

我有一个脚本,它将满足特定条件的记录复制到临时表中。然后原始表被截断并将记录复制回来。

用于创建临时表的语句是;

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

而再次复制记录的声明是;

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

当脚本中执行第二行时,它会引发异常,ORA-01007: variable not in select list但如果我手动运行第二条语句,它就会按预期工作。

我已经检查用户是否具有 CREATE 和 INSERT 权限,因为之前存在问题,即权限被分配给角色而不是用户。

我也尝试过在语句中指定列名select而不是使用select *,但这没有帮助。

以下是整个脚本;

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 个回答
  • 26 Views
Martin Hope
fleshwound
Asked: 2024-10-01 23:32:44 +0800 CST

将数据透视表添加到现有 SQL Oracle 语句时出现歧义错误

  • 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')

我想将这个枢轴添加到它的末尾。

    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,
       )

我正在尝试使数据透视表工作,但是当我为第一个 select 语句添加这样的别名时,我的第一个 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  

它给了我无效的标识符错误

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

Oracle SQL分层查询数据积累

  • 6

我需要在分层查询中累积数据,如下所示:

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

除此之外,我只能访问前一行,因此它无法正常工作。而且我无法SELECT对前一行使用当前子句中定义的别名:

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

我缺少什么?SYS_CONNECT_BY_PATH完全按照我的需要进行操作(除了连接而不是乘法),所以应该是可以的。我可以使用WITH子句来执行此操作,但出于某种原因,它非常慢,例如 需要半秒,CONNECT_BY而 需要约 20 秒WITH。

预期输出:

ID 父代 ID 数数 COUNT_PRODUCT
1 无效的 1 1
2 1 2 2
3 2 3 6
4 3 4 24
5 4 5 120
6 5 6 720

使用 WITH 子句(来自 MT0)

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

plsql 脚本引发“第 1 行 DECLARE 错误”,我不明白原因

  • 5

大家下午好,

我有一个针对 ORACLE 19 执行的 PLSQL 脚本,它显示了一个我无法理解的错误。

脚本会在重新创建索引之前删除所有现有索引。对象定义在 kind-off 列表中,以防止语句重复

  • 删除不存在的索引是可以的(只需捕获异常并继续)
  • 创建失败的索引应继续创建其余索引,直到最后

我的 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

当我通过 sqplus 执行脚本时,出现以下错误,我不明白

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

有人能帮我解决我的问题吗?这可能很简单,但就是找不到原因。

谢谢

oracle
  • 2 个回答
  • 35 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

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

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve