私は何かが欠けているかどうかはわかりませんが、私がしていることは:
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
フィールドは同じテーブルからのものであり、同じデータ型のものであると想定されていませんか?
編集:私は*とすべての作品を選択しようとしました。私は間違いなくここで何かが欠けています。私はそれがそうであるかを知りません。
問題は固定長の文字列であるCharを使用することに起因しているに違いない。どこにあるかわからないが、コードのどこかで、長さNのCharまたはvarchar2文字列をlengh Mのcharに入れようとしている(M> N)。
Oracleにアクセスしているときにこのエラーが発生しましたSP。Netコードを介して。誰かがこのエラーに直面している場合は入力/出力パラメータのサイズを指定 =問題の解決に役立ちます。
サンプルコードは次のようになります。
OracleParameter oparamProjectId = mycom.Parameters.Add( "p_open_flag"、OracleDbType .Varchar2); oparamProjectId.Direction = ParameterDirection.Output; oparamProjectId.Size = 1;