在存储过程的TEXT列中获取NULL值

时间:2019-04-17 11:33:11

标签: db2

在查询下面,我用来获取SP定义,但是在detach(training)中,我在TEXT column中得到的是NULL值,但我可以IBM DATA Studio的SP。

CALL

请帮助

2 个答案:

答案 0 :(得分:1)

您已经确认syscat.procedures.language是SQL,并且您的查询工具能够显示文本的substr()。

解决方法取决于感兴趣的行的长度(文本):

SELECT PROCNAME, substr(TEXT,1, 1024) FROM SYSCAT.PROCEDURES WHERE PROCNAME LIKE '%USP_ABC%'

您可能需要根据文本的长度和您的配置来调整substr提取的长度。例如substr(TEXT,1,2048)或更高的长度值,这是查询工具可以应付的长度。

您可以找到感兴趣的行的带有LENGTH(TEXT)的文本列的长度。

您还可以将CLOB转换为char或varchar,使其长度适合其限制以及所具有的任何查询工具限制。 另一种选择是使用可以与CLOB一起使用的不同查询工具。

答案 1 :(得分:0)

您是否正在使用具有最新修复程序的最新版本的Data Studio?听起来您的SP中可能包含无效的UTF-8字符,或者当您使用SUBSTR和SUBSTRING时,您正在将多字节字符分成两半。

您可以尝试设置

-Ddb2.jcc.charsetDecoderEncoder=3 
在您的eclipse.ini中

让Java使用替换字符而不是用nul替换无效的字符串

请参阅此技术说明

https://www-01.ibm.com/support/docview.wss?uid=swg21684365

否则,请通过IBM Suppport提出此建议

相关问题