SQL Anywhere 查询错误:主机变量的值不足

1 .net c# odbc sqlanywhere

我正在使用 .Net 中的 ODBC 命令对象构建查询,并传入多个参数。对 SQL Anywhere 执行查询时,出现以下错误。(相同的代码适用于 SQL Server)。

[System.Data.Odbc.OdbcException] = {"ERROR [07002] [Sybase][ODBC 驱动程序][SQL Anywhere]没有足够的主机变量值"}

命令对象添加了与查询中的占位符 ('?') 相同数量的参数。以下是未通过测试的简单查询和 C# 代码。

用于填充宿主变量的 C# 代码

String queryText= @"DECLARE @loanuseraddress varchar(40), @loanid decimal Set @loanid = ? Set @loanuseraddress = ? select * from Loan_assignments where Loan_id = @loanid"

        OdbcConnection connection = new OdbcConnection(request.ConnectionString);
        OdbcCommand command;    

        command = new OdbcCommand(queryText, connection);

        OdbcParameter param1 = new OdbcParameter("@loanid", OdbcType.Decimal);
        param1.Value = request.Loan.LoanNumber;
        command.Parameters.Add(param1);

        OdbcParameter param2 = new OdbcParameter("@loanuseremployer", dbcType.VarChar);
        param2.Value = appraisalCompanyUpdate.LoanUserEmployer;
        if (param2.Value == null)
            param2.Value = DBNull.Value;
        command.Parameters.Add(param2);


        connection.Open();  
        OdbcDataReader rows = command.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

Dan*_*Dan 5

我通过检查空值来解决这个问题。当您尝试将空参数传递给 Sybase 时,这就是您得到的错误(至少对我而言)。在某些时候感觉 LoanId 为空。

编辑经过更多研究后,我认为当您尝试通过 .Net 中的 Sybase ODBC 连接进行多次插入/删除/更新时,您也会遇到此错误。我不认为这是受支持的,MSDN 似乎说它是特定于供应商的。