我正在使用 .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)
我通过检查空值来解决这个问题。当您尝试将空参数传递给 Sybase 时,这就是您得到的错误(至少对我而言)。在某些时候感觉 LoanId 为空。
编辑经过更多研究后,我认为当您尝试通过 .Net 中的 Sybase ODBC 连接进行多次插入/删除/更新时,您也会遇到此错误。我不认为这是受支持的,MSDN 似乎说它是特定于供应商的。
| 归档时间: |
|
| 查看次数: |
6094 次 |
| 最近记录: |