2012-08-09 84 views
1

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

与空值

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')) 

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

+0

存储过程是否被写为支持以这种方式进行过滤?我们需要看到SPL代码。 – RET 2012-08-09 21:28:57

+0

不幸的是,SPL代码对我来说没有意义。是由informix使用t-sql或pl/sql吗? – 2012-08-14 10:59:17

回答

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运行语法,所以可能存在一个错误。

+0

我在松鼠编辑器上运行此代码以通过DBMS。但是必须有一些错误,所以出现语法错误。 – 2012-08-14 11:01:53