在informix存储过程参数中使用通配符

时间:2012-08-09 08:31:17

标签: sql informix

我在下面有一个ibm informix存储过程。我可以通过调用松鼠来获得此程序的结果。这是问题所在,结果可能是巨大的,可以包含不必要的超过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'))

它不起作用。我收到语法错误。

1 个答案:

答案 0 :(得分: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运行语法,因此可能存在错误。