首先我要提一下,我正在研究一些已经使用我尚未构建的其他程序中的数据库的程序。
所以我尝试使用存储过程,这是程序的样子:
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
答案 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手动设置文件夹,但是现在我不知道这是可接受的解决方案。