问题描述
背景:
我们有两个IBMi DB2数据库环境,我将它们称为DEV和PRODUCTION。在大多数情况下,尽管没有维护开发数据也不具有权威性,但我们还是有重复的表。
在生产中,我们有一个从第三方来源更新的表,我不想花时间在开发中进行维护。但是我确实需要开发中的最新信息。
尝试的解决方案:
所以我有个聪明的主意
当我select * from myschema.myview
开发时,一切都是笨拙的。我很快得到结果。
但是,如果我向其中添加一个简单的where
子句,select * from myschema.myview where id='1234'
,它将挂起,然后以
进一步测试后,我发现问题出在UDTF中:
select * from table ( myschema.myfunction() ) where id = '1234'
这会产生相同的“ sql_TABLE_CURSOR无法打开”错误。
我要尝试做超出正常使用范围的事情吗?
编辑:
select t.* from table ( myschema.myfunction() ) t where t.id = '1234'
更接近,但仍然无法正常工作。
该函数的构建方式如下:
CREATE FUNCTION myschema.myfunction ( )
RETURNS TABLE (
"ID" VARCHAR(255),ACCOUNTID VARCHAR(255),CREATEDBYID VARCHAR(255),CREATEDBY VARCHAR(255),CREATEDDATE TIMESTAMP,FIELD VARCHAR(255),ISDELETED VARCHAR(255),OLDVALUE VARCHAR(5000),NEWVALUE VARCHAR(5000) )
LANGUAGE sql
SPECIFIC myschema.myfunction
NOT DETERMINISTIC
MODIFIES sql DATA
CALLED ON NULL INPUT
CONCURRENT ACCESS RESOLUTION DEFAULT
SET OPTION ALWBLK = *ALLREAD,ALWcpyDTA = *OPTIMIZE,COMMIT = *NONE,DECRESULT = (31,31,00),DYNDFTCOL = *NO,DYNUSRPRF = *USER,SRTSEQ = *HEX
RETURN SELECT ID,ACCOUNTID,CREATEDBYID,CREATEDBY,CREATEDDATE,FIELD,ISDELETED,OLDVALUE,NEWVALUE FROM production . myschema . mytable ;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)