【发布时间】:2017-01-03 08:59:57
【问题描述】:
首先让我们提一下,我正在开发一些程序,该程序已经在使用我们尚未构建的其他程序中的数据库。
所以我尝试使用存储过程,该过程如下所示:
↑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());
}
}
所以我的问题是为什么我会收到funcion rounddec is not defined 的这个错误。该函数应该在数据库中还是在我的程序或其他外部文件中?有没有办法在我的程序中创建新函数并将其称为 ROUNDDEC,因为我知道它需要做什么?
错误图片link
【问题讨论】:
-
没有调用 ROUNDDEC - 这是 SQL 错误吗?
-
我在帖子中添加了错误图片。它发生在
command.ExecuteReader(); -
请贴出存储过程的代码。错误本身表明您正在引用数据库中不存在的 UDF,或者服务器上无法访问包含 UDF 的库(不存在,错误位数)。 Firebird 本身没有函数
rounddec。 -
至于如何在 Visual Studio 中找到它,不知道。我建议你使用 Flame robin 查看你的数据库,或者使用 select
select RDB$PROCEDURE_NAME, RDB$PROCEDURE_SOURCE from RDB$PROCEDURES where RDB$PROCEDURE_NAME = 'NAPRAVISTAVKU'来获取存储过程的主体。
标签: c# sql database stored-procedures firebird