1

以下の ibm informix ストアド プロシージャがあります。squirrel を呼び出すことで、この手順の結果を取得できます。ここで問題が発生します。結果は、不要な 20 列と 100 行を超える巨大なものになる可能性があります。したがって、特定の結果に「052%」などのワイルドカードを含める必要がある下の最初の NULL パラメータの代わりに、入力パラメータ (プロシージャ内の呼び出しアドレス パラメータ) を使用する必要があります。ワイルドカードを使用しようとすると、空の結果が返されます。

null値で呼び出す

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 に答える