2012-08-09 81 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