首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将C#应用程序连接到SAP数据库时,参数/列(2)不绑定异常

将C#应用程序连接到SAP数据库时,参数/列(2)不绑定异常
EN

Stack Overflow用户
提问于 2018-03-03 14:51:12
回答 1查看 1.9K关注 0票数 1

我正在创建一个连接到SAPBHANA2.0数据库的C#应用程序。

在我的pc机上,我安装了2.02版本的HDBODBC和HDBODBC32驱动程序。

我想要做的是创建一个查询,其中有一个参数在不同的情况下被引用。

下面是一个示例代码:

代码语言:javascript
复制
string query = "SELECT :p0, :p0 FROM DUMMY";
IDbCommand dbCommand = hanaConnection.CreateCommand();

dbCommand.CommandText = query;

IDataParameter param = dbCommand.CreateParameter();
param.Value = "A";
param.ParameterName = ":p0"; 

dbCommand.Parameters.Add(param);

hanaConnection.Open();

IDataReader dataReader = dbCommand.ExecuteReader();

while (dataReader.Read())
{
    ReadSingleRow((IDataRecord)dataReader);
}

为了使它更加清晰,object hanaConnection实现了IDbConnection

当我执行语句IDataReader dataReader = dbCommand.ExecuteReader();时,会引发异常:

代码语言:javascript
复制
Sap.Data.Hana.HanaException
HResult=0x80004005
Message=Parameter/Column (2) not bound.
Source=SAP HANA Data Provider for Microsoft ADO.NET
StackTrace:
   at Sap.Data.Hana.HanaCommand._ExecuteReader(CommandBehavior commandBehavior, Boolean isExecuteScalar, Boolean isBeginExecuteReader)
   at Sap.Data.Hana.HanaCommand.ExecuteReaderBatch(CommandBehavior behavior)
   at Sap.Data.Hana.HanaCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
   ...

我尝试在Hana Studio中创建一个纯sql命令,以便了解是否有可能在SELECT语句中不止一次引用一个参数,并且得到了正确的结果。

这是我执行的sql语句:

代码语言:javascript
复制
CREATE PROCEDURE PROC (IN var1 INT, IN var2 INT)
AS
BEGIN
   SELECT :var1, :var2, :var2 FROM DUMMY;
END;

CALL PROC (var1=>1, var2=>2);

如果我使用.NET odbc接口,为什么会出现异常?是否有被看护的行为?我是否必须创建比一个参数更多的参数,即使它们具有相同的类型和价值?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-05 03:32:00

SAP ADO.net驱动程序不支持SQL语句的命名参数。相反,它使用在语句文本中显示为问号(?)的位置参数。

请参阅关于该用于Microsoft引用/ ADO.NET参数类/ParameterName属性的SAP数据提供程序的参考文档。

对于您的需求,这意味着您必须为语句中每个参数的出现绑定相同的值,这些参数应该具有相同的值。

请注意,SQLScript只支持命名参数,这就是为什么您的过程示例代码工作时没有问题。

顺便说一句:如果您只想快速尝试SQLScript代码,可以使用匿名块,而不是创建过程。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49085418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档