为什么SQL Anywhere会忽略@name参数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么SQL Anywhere会忽略@name参数?相关的知识,希望对你有一定的参考价值。
我正在使用Dapper查询SQL Anywhere数据源,并且我收到一个错误,使得看起来我的where子句值的“@”前缀被忽略。
Double balance = qb.Query<Double>("select end_balance_amt from QBReportAdminGroup.v_lst_customer where list_ident = @listid", new { listid = ListID }).Single();
错误:
Column '@listid' not found
我可以访问该表,我的手动查询工作正常。
select end_balance_amt from QBReportAdminGroup.v_lst_customer where list_ident = '8000000B-1433635931'
例:
答案
对于SQL Anywhere及其.Net数据提供程序(至少为Sap.Data.SQLAnywherev4.5),参数应以:
为前缀,而不是@
。
在我看来,这就是问题所在。但我不知道Dapper是否应该从其用户那里抽象出这种供应商的特定行为。
所以你应该尝试:
Double balance = qb.Query<Double>(
"select end_balance_amt from QBReportAdminGroup.v_lst_customer where list_ident = :listid",
new { listid = ListID }).Single();
另一答案
找我试图使用未声明的变量@listid。
如果我在DB Anywhere中使用DBISQL,我会写这样的东西:
开始
DECLARE @list varchar(20);
SET @list ='8000000B-1433635931';
从QBReportAdminGroup.v_lst_customer中选择end_balance_amt,其中list_ident = @listid“;
结束
以上是关于为什么SQL Anywhere会忽略@name参数?的主要内容,如果未能解决你的问题,请参考以下文章
如何列出 SQL Anywhere 中的所有用户表及其行数?
MySQL mobilink 与 SQL Anywhere 同步
sql SQL Anywhere:Mostrar Tablas y Campos de la Base de Datos