1

我在下面有一个 ibm informix 存储过程。我可以通过调用 squirrel 来获得这个过程的结果。问题来了,结果可能是巨大的,可能包含不必要的 20 多列和 100 行。因此,我需要使用输入参数(在过程中调用地址参数)而不是下面的第一个 NULL 参数,该参数必须包含通配符,如“052%”到特定结果。当我尝试使用通配符时,它确实返回空结果。

以空值调用

CALL sp_ccdr('2012-08-07 00:00:00.000', 
        '2012-08-08 00:00:00.000',  
        '0', NULL, NULL,NULL, NULL, NULL, NULL,
         NULL, '0','0',NULL,NULL,'f')

使用通配符调用

CALL sp_ccdr('2012-08-07 00:00:00.000', 
        '2012-08-08 00:00:00.000',  
        '0', "052%", NULL,NULL, NULL, NULL, NULL,
         NULL, '0','0',NULL,NULL,'f')

以及如何从结果集中选择一些列?

select col1 from (CALL sp_ccdr('2012-08-07 00:00:00.000', 
        '2012-08-08 00:00:00.000',  
        '0', "052%", NULL,NULL, NULL, NULL, NULL,
         NULL, '0','0',NULL,NULL,'f'))

这没用。我收到语法错误。

4

1 回答 1

0

通常,Informix 不支持 CALL。某些 API 可能会为您将 CALL 转换为 EXECUTE PROCEDURE,但这不是您在上一个示例中需要做的。

SELECT col1
  FROM TABLE(MULTISET(sp_ccdr('2012-08-07 00:00:00.000', '2012-08-08 00:00:00.000',  
                              '0', "052%", NULL, NULL, NULL, NULL, NULL,
                              NULL, '0', '0', NULL, NULL, 'f')));

这至少有一个工作的机会;我没有通过 DBMS 运行语法,因此其中可能存在错误。

于 2012-08-11T21:25:20.153 回答