如何将 char 转换为 Informix 数据库中的数组?
Posted
技术标签:
【中文标题】如何将 char 转换为 Informix 数据库中的数组?【英文标题】:How to convert char into an array in Informix database? 【发布时间】:2010-07-19 15:43:46 【问题描述】:我有一个这样的存储过程:
CREATE PROCEDURE Proc_Test(testvalue set(char(1000) not null)) RETURNING int;
DEFINE z char(7000);
LET z = ' ';
FOREACH
select * into z from table(testvalue)
END FOREACH;
return 1;
end procedure;
由于需求的变化,我想将此存储过程更改为:
CREATE PROCEDURE Proc_Test(testvalue char(7000) not null) RETURNING int;
DEFINE z char(7000);
LET z = ' ';
CAST(cvg AS set(char(1000)));
FOREACH
select * into z from table(testvalue)
END FOREACH;
return 1;
end procedure;
我遇到了一些未知的语法错误。
我知道错误在这里:
CAST(cvg AS set(char(1000)));
您知道将变量转换为另一种类型以在运行时转换它的更好方法吗?
【问题讨论】:
【参考方案1】:困惑
您的程序到底应该做什么?据我所知,这是对“testvalue 中的字符串是否为 NULL”的扭曲测试?也许...实际上代码无条件返回 1,因此不清楚它是否甚至执行 null 测试,但该过程可能在 null 字符串上比在有值的字符串上执行得更快。
诊断
出现语法错误是因为 'cvg' 不是过程中定义的变量。此外,CAST 必须在作业的 RHS 或类似的东西上。而且我不清楚您是否可以通过强制转换将 CHAR(7000) 分解为一组中的七个 CHAR(1000) 字段。
修复?
但是,由于我不了解旧要求或新要求,因此我无法建议您该怎么做。
【讨论】:
好的,抱歉我没有提到存储过程的使用。这个存储过程只是一个测试,最重要的是我将制作业务逻辑。我这样做的原因是因为 JCC 驱动程序不支持以数组为参数的存储过程。所以如果我能够成功地将 char 变量转换为数组,我不再需要传递集合对象,事实上我可以传递一个 String 对象,然后我可以将它转换为 set 变量到存储过程本身。我希望它有所帮助。以上是关于如何将 char 转换为 Informix 数据库中的数组?的主要内容,如果未能解决你的问题,请参考以下文章
如何编译 Informix GLS 语言环境/字符集。 (将 .lc 文件转换为 .lco 以创建数据库的 Informix 语言环境)
如何将此 Informix 嵌套联接转换为 tsql 嵌套联接?