通过JDBC创建存储过程失败,出现语法错误

2020-09-19 22:58发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


对于我们在HANA Express 2.0 SP03上的应用程序,我们需要一些模仿" DROP ... IF EXISTS"的SQL行为。

为此,我们创建了一些存储过程,并使用WebIDE插入了它们。 到目前为止效果很好。

但是,当我尝试通过JDBC插入相同的存储过程时,它会因语法错误而失败。

其中之一是:

创建过程dropindexifexists(IN索引名VARCHAR(40))语言SQLSCRIPT AS
 开始
     声明myrowid INT;
     从" PUBLIC"中选择count(*)到myrowid中。" INDEXES"其中schema_name =(从DUMMY中选择CURRENT_SCHEMA)和index_name =:indexname;
     如果((myrowid> 0)然后
         exec'DROP INDEX'||:indexname;
     万一;
 END; 

使用JDBC,对于此语句,我收到以下错误:

创建过程dropindexifexists(IN索引名VARCHAR(40))语言SQLSCRIPT AS
 开始
     声明myrowid INT

 SAP DBTech JDBC:[257](在108):sql语法错误:第3行第18列(在pos 108)

有人可以向我解释这种行为以及可能的解决方法吗?


谢谢

Philipp

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


对于我们在HANA Express 2.0 SP03上的应用程序,我们需要一些模仿" DROP ... IF EXISTS"的SQL行为。

为此,我们创建了一些存储过程,并使用WebIDE插入了它们。 到目前为止效果很好。

但是,当我尝试通过JDBC插入相同的存储过程时,它会因语法错误而失败。

其中之一是:

创建过程dropindexifexists(IN索引名VARCHAR(40))语言SQLSCRIPT AS
 开始
     声明myrowid INT;
     从" PUBLIC"中选择count(*)到myrowid中。" INDEXES"其中schema_name =(从DUMMY中选择CURRENT_SCHEMA)和index_name =:indexname;
     如果((myrowid> 0)然后
         exec'DROP INDEX'||:indexname;
     万一;
 END; 

使用JDBC,对于此语句,我收到以下错误:

创建过程dropindexifexists(IN索引名VARCHAR(40))语言SQLSCRIPT AS
 开始
     声明myrowid INT

 SAP DBTech JDBC:[257](在108):sql语法错误:第3行第18列(在pos 108)

有人可以向我解释这种行为以及可能的解决方法吗?


谢谢

Philipp

付费偷看设置
发送
1条回答
My梦
1楼-- · 2020-09-19 23:33

您可以显示用于通过JDBC创建过程的代码吗?

例如,

SAP HANA Studio使用JDBC,并且可以很好地执行创建过程语句。

也:在您的查询中,您无需编写

 schema_name =(从DUMMY中选择CURRENT_SCHEMA)

足够使用

 schema_name = CURRENT_SCHEMA 

相反。

一周热门 更多>