在动态SQL中限制5000个字符

2020-09-08 10:19发布

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

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


你好


大约一年以来,我们在HANA上使用"纯" SQL进行数据集成和暂存。 最大限制是通过命令EXEC执行的动态ic SQL语句的5000个字符的最大长度。 因此,我们创建了动态静态SQL语句(将它们写在表中),并将此表导出为文本文件,以便在命令行上使用HDBSQL执行。 这很烦人。 5000是一个人为限制(不是8192 ..)有什么方法可以设置更大的长度?


非常感谢!

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

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


你好


大约一年以来,我们在HANA上使用"纯" SQL进行数据集成和暂存。 最大限制是通过命令EXEC执行的动态ic SQL语句的5000个字符的最大长度。 因此,我们创建了动态静态SQL语句(将它们写在表中),并将此表导出为文本文件,以便在命令行上使用HDBSQL执行。 这很烦人。 5000是一个人为限制(不是8192 ..)有什么方法可以设置更大的长度?


非常感谢!

付费偷看设置
发送
3条回答
小熊yu生菜
1楼-- · 2020-09-08 10:39

据我所知,动态SQL语句没有特定限制,仅描述了此处(2,147,483,648字节)。

我猜您为动态SQL使用了VARCHAR或NVARCHAR类型 声明。 两种类型的长度均限制为5000(请查阅文档 )。

您可以使用 NCLOB 类型用于长度超过5000的语句。

N-Moskvin
2楼-- · 2020-09-08 10:55

如上所述,NVARCHAR的长度不能超过5000,即使您说它应该具有 长度为8192。请检查我上面已经链接的文档。

请声明NC_LOB类型的S_SQL。

梦想连接
3楼-- · 2020-09-08 10:49

非常感谢Florian,现在我明白了!

我认为变量字段和数据库字段之间的DATATYPE是相同的,而我在这方面是错的(请参见下面的示例)。

我现在在带有EXEC的NCLOB变量中使用了一个包含将近20.000个字符的SQL语句,它起作用了!

感谢您的快速响应。

 N_COUNTER = 8192/16;
   FOR N_INTEGER IN 1 .. N_COUNTER DO
  
    S_PROCEDURE_STATUS = S_PROCEDURE_STATUS ||  '0123456789__'||  LPAD(N_INTEGER,4,'0');
   结束于;
  
   从DUMMY中选择RIGHT(S_PROCEDURE_STATUS,22);  
-输出为'__05110123456789__0512',因此NVARCHAR类型的VARIABLE超过5000! 删除表ATH_40_STAGING.T_NVARCHAR_TEST; 创建表ATH_40_STAGING.T_NVARCHAR_TEST( S_NVARCHAR NVARCHAR(8192)NULL, N_LENGTH整数默认值-1 ); -无法执行'CREATE TABLE ATH_40_STAGING.T_NVARCHAR_TEST(S_NVARCHAR NVARCHAR(8192)NULL,N_LENGTH INTEGER ...' -SAP DBTech JDBC:[267]:指定的长度对于其数据类型而言太长:标识符" S_NVARCHAR"超过了最大长度5000:第2行第4行(在pos 49) -但是由于表的字段不起作用,因此这里仅是5000个字符的限制。

一周热门 更多>