参数/列(2)未绑定将C#应用程序连接到SAP HANA数据库时出现异常

时间:2018-03-03 14:51:13

标签: c# .net odbc sap hana


我正在创建一个连接到SAP HANA 2.0数据库的C#应用​​程序 在我的电脑中我安装了HDBODBC和HDBODBC32驱动程序,均为2.02版本 我要做的是创建一个查询,其中有一个参数在不同的场合被引用 这是一个示例代码:

hanaConnection

为了更清楚,对象IDbConnection实现了IDataReader dataReader = dbCommand.ExecuteReader();

当我执行语句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() ... 时,会引发异常:

SELECT

我尝试在Hana Studio中创建执行一个纯sql命令,以了解是否可以在CREATE PROCEDURE PROC (IN var1 INT, IN var2 INT) AS BEGIN SELECT :var1, :var2, :var2 FROM DUMMY; END; CALL PROC (var1=>1, var2=>2); 语句中多次引用一个参数,并得到正确的结果。
这是我执行的sql语句:

CREATE TABLE cm_indiv ( cmte_id TEXT NOT NULL, ...);

INSERT INTO cm_indiv(...) SELECT ... FROM ... JOIN ...;

CREATE INDEX ...;

如果我使用.NET odbc接口,为什么会发生异常?是否有参加的行为?我是否必须创建多于一个参数,即使它们具有相同的类型和值?

由于

1 个答案:

答案 0 :(得分:1)

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

请参阅SAP HANA Data Provider for Microsoft ADO.NET API Reference/HanaParameter class/ParameterName property上的参考文档。

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

请注意,SQLScript仅支持命名参数,这就是您的过程示例代码无故障运行的原因 顺便说一句:如果您只是想快速尝试SQLScript代码,可以使用匿名块而不是创建过程。