web-dev-qa-db-ja.com

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

私は何かが欠けているかどうかはわかりませんが、私がしていることは:

ROWTYPEを返す関数があります

  FUNCTION myFunc(pChar CHAR) RETURN myTable%ROWTYPE AS
    myTable_rec myTable%ROWTYPE;
  BEGIN
    SELECT col1, col2, col3
    INTO myTable_rec.col1 
      , myTable_rec.col2
      , myTable_rec.col3
    FROM myTable
    WHERE col4 = pChar;

    RETURN(myTable_rec);
  END B001_03;

次に、私のプロシージャ(上記の関数を呼び出す)で、次のように宣言しました。

myTable_rec myTable%ROWTYPE;

しかし、私が手順を呼び出すと:

...
myTable_rec := myFunc(someChar);
...

私は得る

ORA-06502: PL/SQL: numeric or value error: character string buffer too small

フィールドは同じテーブルからのものであり、同じデータ型のものであると想定されていませんか?

編集:私は*とすべての作品を選択しようとしました。私は間違いなくここで何かが欠けています。私はそれがそうであるかを知りません。

6
Incognito

問題は固定長の文字列であるCharを使用することに起因しているに違いない。どこにあるかわからないが、コードのどこかで、長さNのCharまたはvarchar2文字列をlengh Mのcharに入れようとしている(M> N)。

5
Florin Ghita

Oracleにアクセスしているときにこのエラーが発生しましたSP。Netコードを介して。誰かがこのエラーに直面している場合は入力/出力パラメータのサイズを指定 =問題の解決に役立ちます。

サンプルコードは次のようになります。

OracleParameter oparamProjectId = mycom.Parameters.Add( "p_open_flag"、OracleDbType .Varchar2); oparamProjectId.Direction = ParameterDirection.Output; oparamProjectId.Size = 1;

3
Biki