c# - 偏移量 1049 处的无效请求 BLR - 函数 ROUNDDEC 未定义

标签 c# sql database stored-procedures firebird

首先让我们提一下,我正在开发的一些程序已经在使用我尚未构建的其他程序中的数据库。

所以我尝试使用存储过程,下面是该过程的样子:

↑OK
↓VRDOK
↓BRDOK
↓ROBAID
↓CENA_BEZ_PDV
↓KOL
↓RABAT

这是我的命令:

using (var command = new FbCommand("NAPRAVISTAVKU", con)
       {
           CommandType = CommandType.StoredProcedure
       })
{
    command.Parameters.AddWithValue("@VRDOK", 33);
    command.Parameters.AddWithValue("@BRDOK", 711066);
    command.Parameters.AddWithValue("@ROBAID", 1040);
    command.Parameters.AddWithValue("@CENA_BEZ_PDV", 0.0);
    command.Parameters.AddWithValue("@KOL", 10.0);
    command.Parameters.AddWithValue("@RABAT", 0.0);
    FbDataReader dr = command.ExecuteReader();
    while (dr.Read())
    {
        MessageBox.Show(dr[0].ToString());
    }
}

所以我的问题是,为什么我会收到这样的错误:function rounddec is not defined。该功能应该在数据库中还是在我的程序或其他外部文件中?有没有办法在我的程序中创建新函数并将其命名为 ROUNDDEC,因为我知道它需要做什么?

错误图片 link

最佳答案

ROUNDDEC 是 FreeUDBLib.dll 的一部分,它与 32 位 firebird 一起工作。问题是我在我的 PC 上安装了 Firebird 3.0 x64、Firebird 2.1 x64 和 Firebird 2.1 x86。我的程序是为 Firebird 2.1 x86 构建的,但出于某种原因,即使我在 x86 版本的 ULF 文件中有这个 DLL,它也没有从中提取它,而是在 x64 位版本中检查 UDF。所以解决方案是卸载所有版本并重新安装 2.1 x86,然后重新安装 ddex 和 firebird.sql 并且它起作用了。

我认为有更好的方法为 UDF 手动设置文件夹,但目前我不知道,所以这是可以接受的解决方案。

关于c# - 偏移量 1049 处的无效请求 BLR - 函数 ROUNDDEC 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41439767/

相关文章:

php - 使用 ORDER BY DESC 排名,但更新列

javascript - 选择列中给出相应单元格值的单元格

php - 使用户输入对数据库安全的最佳功能是什么?

c# 动态访问 child 作为 IEnumerable

c# - 获取特定文化的 DateTime.DayOfWeek

c# - Storyboard /动画的 "handful"影响性能?

mysql - 选择具有多个限制的值

C# 获取主音量级别/百分比

mysql - 如何优化 MySQL 索引/查询以进行模块化搜索?

sql - SSMS 将查询结果导出到 Excel 或 CSV