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

时间:2017-01-03 08:59:58

标签: c# sql database stored-procedures firebird

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

所以我尝试使用存储过程,这是程序的样子:

select *
from pp
where 1
    and timestamp >= '2016-01-01' and timestamp <= '2017-01-03'
    and (s = 0 or s is NULL)
    and (
        from in (select col from Temp)
        or
        to in (select col from Temp2)
    )
order by idx desc limit 0, 100;

所以这是我的命令:

↑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()); } } 这个错误。该函数应该在数据库中还是在我的程序或其他外部文件中?有没有办法在我的程序中创建新函数并将其命名为ROUNDDEC,因为我知道它需要做什么?

错误图片link

1 个答案:

答案 0 :(得分:1)

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

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