RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

问题[oracle]

Martin Hope
миха капа
Asked: 2025-03-21 19:00:29 +0000 UTC

出现错误 /usr/bin/ld: cannot find -lclntsh

  • 5

尝试构建使用 oracle-instantclient 的项目时,出现错误:

/usr/bin/ld: cannot find -lclntsh
collect2: error: ld returned 1 exit status
make: *** [Makefile:10: build] Error 2

在instantclient-basic-linux.x64-[VERSION].zip包中- 缺少此文件/lib(或仅仅是密钥)lclntsh,但有这个:libclntsh.so。

这里提到了这个库:

/home/test/go/src/github.com/mattn/go-oci8/README.md:Libs: -L${libdir} -lclntsh
/home/test/go/src/github.com/mattn/go-oci8/oci8.pc:Libs: -L${libdir} -lclntsh
/home/test/go/src/github.com/mattn/go-oci8/.travis.yml:      echo "Libs: -L$ORACLE_HOME/lib -Wl,-rpath,$ORACLE_HOME/lib -lclntsh";

我手动指定了这些文件中 oracle-instantclient 内容的路径 - 就我而言,它在这里:

/usr/lib/oracle/19.10/client64/lib/

所以 :

prefix=/usr
includedir=${prefix}/include/oracle/19.10/client64
libdir=${prefix}/lib/oracle/19.10/client64/lib

但没有任何帮助。

附言:

declare -x ORACLE_HOME="/usr/lib/oracle/19.10/client64"
declare -x LD_LIBRARY_PATH="/usr/lib/oracle/19.10/client64/lib/"
oracle
  • 1 个回答
  • 31 Views
Martin Hope
BSW
Asked: 2024-02-02 01:14:05 +0000 UTC

选择从 Oracle 到 Golang 的 blob 会产生有限数量的字符

  • 5

我从 github.com/mattn/go-oci8 切换到库 github.com/sijms/go-ora/v2 go-oci8 没有这样的问题,但还有其他问题。与斑点相同。

我从表中进行选择,结果最多将 32769 个字符插入到数据变量中。如果REPORT_FILE中的数据较小,则没有问题。看来我的代码认为 REPORT_FILE 是一个字符串 =) 也许有人可以告诉我我做错了什么?

Oracle 中的表。REPORT_FILE 存储转换为 base64 的文件:

CREATE TABLE TRANSINV_EX_FILES (
    GUID VARCHAR2(50),
    REPORT_NAME VARCHAR2(50),
    REPORT_FILE BLOB,
    RN NUMBER(17,0),
    REPORT_FORMAT VARCHAR2(10)
);

我这样连接到数据库:

    connString := fmt.Sprintf("oracle://%s:%s@%s:%s/%s", cfg.Username, cfg.Password, cfg.Host, cfg.Port, cfg.DBName)

    db, err := sql.Open("oracle", connString)
    if err != nil {
        return nil, err
    }

问题代码:

    query := `select tf.report_file, tf.report_name, tf.report_format from TRANSINV_EX_FILES tf where tf.guid = :1`
    
    rows, err := s.db.QueryContext(ctx, query, id)
    if err != nil {
        return nil, fmt.Errorf("%s: getting additional files cdb: %w", op, err)
    }
    defer rows.Close()

    for rows.Next() {
        var (
            reportFormat sql.NullString
            reportName   sql.NullString
            data         []byte  // тут получается 32769, хотя блоб > 50000
        )

        err := rows.Scan(&data, &reportName, &reportFormat)
        if err != nil {
            return nil, fmt.Errorf("%s: getting additional files cdb: %w", op, err)
        }

    }
    
oracle
  • 1 个回答
  • 26 Views
Martin Hope
Alexandr Sivenkov
Asked: 2023-08-11 22:02:46 +0000 UTC

Oracle中使用多个开始的java存储过程调用

  • 4

有一个过程有几个 begin ... end 块;
我不知道如何启动这个奇迹,请告诉我你的想法。

代码示例。

declare
    v_sid        number(10);
    v_serial     number(10);
    v_table_name varchar2(64);
    v_start_date date;
    v_slog_id    number(10);
  begin
    begin 
      select ****
      where ****
    exception 
      ****
    end;
        
    begin     
      select 
        *** as v_sid,
        *** as v_serial
      into v_sid, v_serial
      from (
          select ***
          from ***
          where *** || v_table_name || *** >= v_start_date
        )
      where ***
    exception 
      *** 'v_slog_id = ' || v_slog_id || chr(13) ||', v_table_name = ' || v_table_name || chr(13) ||', v_start_date = ' || to_char(v_start_date,'dd.mm.yyyy hh24:mi:ss') || chr(13) );
    end;
   
    begin 
        *** ' || v_sid || ', serial: ' || v_serial ||');
    exception 
        ***
    end;
  end;
oracle
  • 2 个回答
  • 16 Views
Martin Hope
Acinit
Asked: 2023-07-28 17:18:16 +0000 UTC

浮点问题,熵

  • 5

想象一下以下情况

我们有 4 列

  • 不含增值税金额 ->sum_wo_tax
  • 含增值税金额 ->sum_w_tax
  • 决定是否缴纳增值税 ->is_wo_nds
  • 这笔金额是否被排除在外(我们是否考虑在内)->excluded_from_delivery

我们要计算订单中扣除排除项目的系数,有一个公式

sum(decode(t.is_wo_nds, 1, t.sum_wo_tax, t.sum_w_tax) * abs(t.excluded_from_delivery)) 
/
sum(decode(t.is_wo_nds, 1, decode(t.sum_wo_tax,0,1,t.sum_wo_tax), decode(t.sum_w_tax,0,1,t.sum_w_tax))) as coef

我们来测试一下。

我们假设有3个位置,第一个为100,第二个为100,第三个为0,排除第一个和第三个,结果我们在金额中减去了100卢布200,等于一个系数0.5的

select sum(decode(t.is_wo_nds, 1, t.sum_wo_tax, t.sum_w_tax) * abs(t.excluded_from_delivery)) 
/
sum(decode(t.is_wo_nds, 1, decode(t.sum_wo_tax,0,1,t.sum_wo_tax), decode(t.sum_w_tax,0,1,t.sum_w_tax))) as coef
              from (select 0 as is_wo_nds,
                           100 as sum_wo_tax,
                           100 as sum_w_tax,
                           1 as excluded_from_delivery
                           from dual
                    union all
                    select 0 as is_wo_nds,
                           100 as sum_wo_tax,
                           100 as sum_w_tax,
                           0 as excluded_from_delivery
                           from dual
                    union all
                    select 0 as is_wo_nds,
                           0 as sum_wo_tax,
                           0 as sum_w_tax,
                           1 as excluded_from_delivery
                           from dual) t

我们得到

coef
.4975124378109452736318407960199004975124

这很奇怪,但它应该有效。0.5

sum_w_tax如果我们删除所有处理并且我们确信只有并且excluded_from_delivery那就是,将参与我们的计算

select sum(t.sum_w_tax * abs(t.excluded_from_delivery)) /
                   sum(t.sum_w_tax) as coef
              from (select 0 as is_wo_nds,
                           100 as sum_wo_tax,
                           100 as sum_w_tax,
                           1 as excluded_from_delivery
                           from dual
                    union all
                    select 0 as is_wo_nds,
                           100 as sum_wo_tax,
                           100 as sum_w_tax,
                           0 as excluded_from_delivery
                           from dual
                    union all
                    select 0 as is_wo_nds,
                           0 as sum_wo_tax,
                           0 as sum_w_tax,
                           1 as excluded_from_delivery
                           from dual) t

我们得到

coef
.5

解决方案本身就是舍入,但对于要舍入哪个符号没有明确的答案,因为例外可能是sum_w_tax它趋于无穷大的位置(相对于sum_w_tax它趋于 0 的位置)。

db<>fiddle(如果需要)

他的行为有这么奇怪吗decode?


UPD1

如果我们重写正在构建的所有内容会怎样case when?

SELECT 
    SUM(CASE 
            WHEN t.is_wo_nds = 1 THEN t.sum_wo_tax * ABS(t.excluded_from_delivery)
            ELSE t.sum_w_tax * ABS(t.excluded_from_delivery)
        END
    ) / 
    SUM(CASE 
            WHEN t.is_wo_nds = 1 THEN 
                CASE 
                    WHEN t.sum_wo_tax = 0 THEN 1
                    ELSE t.sum_wo_tax
                END
            ELSE 
                CASE 
                    WHEN t.sum_w_tax = 0 THEN 1
                    ELSE t.sum_w_tax
                END
        END
    ) as coef
              from (select 0 as is_wo_nds,
                           100 as sum_wo_tax,
                           100 as sum_w_tax,
                           1 as excluded_from_delivery
                           from dual
                    union all
                    select 0 as is_wo_nds,
                           100 as sum_wo_tax,
                           100 as sum_w_tax,
                           0 as excluded_from_delivery
                           from dual
                    union all
                    select 0 as is_wo_nds,
                           0 as sum_wo_tax,
                           0 as sum_w_tax,
                           1 as excluded_from_delivery
                           from dual) t

结果是一样的

coef
.4975124378109452736318407960199004975124

那些。原则上,条件块会对数字做一些事情吗?

更新了数据库<>小提琴

oracle
  • 2 个回答
  • 31 Views
Martin Hope
Андрей Горлов
Asked: 2022-12-25 14:56:10 +0000 UTC

从计算机上卸载 Virtualbox 的问题

  • 5

我需要从Windows 11 home上的计算机上删除virtualbox,因为virtualbox发生了无法以任何方式修复的错误,结果我得到了一个既无法打开也无法删除的砖块程序,此外,由于该程序无法删除,也无法下载。

请帮帮我。

oracle
  • 1 个回答
  • 8 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

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

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5