点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我正在尝试从.NET在HANA中检查表是否存在。 所以我写了一个动态SQL,但是执行它会导致以下错误:
必须声明
标识符:1:在Sap.Data.Hana.HanaCommand.ExecuteScalar(Sap.Data.Hana.HanaCommand._ExecuteReader(CommandBehavior commandBehavior,Boolean isExecuteScalar,Boolean isBeginExecuteReader)中位于第8行第21列 )
这是我要构建的代码:
>代码以执行代码
使用(HanaCommand cmd =新的HanaCommand(sql,conn)) { conn.Open(); int ret =(int)cmd.ExecuteScalar(); 返回ret }
>构建要执行的SQL的代码:
StringBuilder sql = new StringBuilder(); sql.AppendFormat( @"做 开始 声明行数INT; 从table_name如'my_table'和schema_name ='my_schema'的表中选择count(*)进入行计数; 如果:rowcount = 0则 从哑元中选择0; 其他 从假人中选择1; 万一; 结束;");
我想对此有一个初步的答案。 解释此SQL的方式是通过将每行(用;分隔)作为自己的命令来执行。
这可能是ExecuteScaler命令的行为。 因此,所有多行逻辑都应改为使用ExecuteNonQuery执行。 我将在下一个尝试。
为什么在这里使用动态SQL? 带有参数的SELECT可以很好地完成这项工作。
很有趣的是,这个问题被否决了。 对于SAP SQL无法做的事情:)
动态SQL在这里仅用作测试平台-我的要求是从.NET创建表(如果缺少的话)。
我粘贴的这段代码仅用于测试第1部分,表的存在。
不幸的是,我回到了方格1。我再次收到"必须声明标识符"错误。
是的,这确实很简单。 但是请记住,只要将自己限制在原始代码中的以下内容,我就可以用更少的行数实现相同的目标:
注意我只是删除了变量" rowcount"? 如果要获得表的存在是我的目的,那就是我要做的一切。 但是正如我在较早的评论中提到的那样。 目标是实际创建该表(如果不存在)。
这就是为什么我需要添加类似脚本的逻辑并通过ExecuteNonQuery执行的原因。 表的定义是动态的,并且是基于配置的,但是一旦找到一种有条件地创建表本身的方法,我将在以后处理。
一周热门 更多>