何かが欠けているかどうかはわかりませんが、私がやっていることは次のとおりです。
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
フィールドは FROM 同じテーブルと OF THE SAME データ型であるはずではありませんか (私のほとんど理解していないため)。
編集:私は * を選択しようとしましたが、すべてが機能します。ここで間違いなく何かが欠けています。私はそれがそうであることを知りません。