0

私のアプリケーションの 1 つに。クエリが 1 つあります。実際には関数を呼び出しており、関数は o/p を文字列として返します。関数から返されたo/pから部分文字列を取得する方法を知っている人はいますか?

私はこのように使用しています

select substr(myfunction(),0,4000) from dual.

以下の問題が発生しています。

ORA-06502: PL/SQL: 数値または値のエラー: 文字列バッファが小さすぎます。

私を助けてください 。前もって感謝します。

4

3 に答える 3

1

ほとんどの場合、関数で使用する変数の 1 つに許可されているよりも多くの文字を格納しようとしています。参照: PL/SQL: 数値または値のエラー: 文字列バッファが小さすぎます %ROWTYPE

最も簡単な例:

DECLARE
  v_varchar2_test VARCHAR2(5);
BEGIN
  v_varchar2_test := '123456';
END;

エラーは、あなたの場合のように、ORA-06502 です。

于 2013-10-03T13:18:35.333 に答える
0

関数によって返される値が正しい型であることを確認してください。私はちょうどこのようにそれを試してみました:

create or replace 
FUNCTION MONTH
(DATA IN DATE)
RETURN VARCHAR IS
BEGIN
  RETURN TO_CHAR(DATA, 'MM');
END;

そして呼び出し:

SELECT substr(MONTH(SYSDATE),0,1) FROM DUAL;

そしてそれはうまくいきました。

于 2013-10-03T13:25:43.733 に答える