Nie wiem, czy jestem czegoś brakuje ale to, co robię jest:PL/SQL: numeryczny lub wartość błędu: bufor zbyt mały ciąg znaków% ROWTYPE
Mam funkcję zwracającą 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;
następnie w moim procedury (która wywołuje funkcję powyżej), oświadczyłem:
myTable_rec myTable%ROWTYPE;
ale gdy zgłoszę w postępowaniu:
...
myTable_rec := myFunc(someChar);
...
uzyskać
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
nie są pola powinien być z tej samej tabeli i z tego samego typu danych (zgodnie z moim małym zrozumieniem)?
EDYCJA: Próbowałem WYBIERZ * i wszystkie prace. Zdecydowanie brakuje czegoś tutaj. Po prostu nie wiem, że tak.
dlaczego nie używasz Varchar2 zamiast Char? –
wow, który naprawdę rozwiązał problem. Połóż odpowiedź, a ja oznaczy ją jako najlepszą odpowiedź. Naprawdę zastanawia mnie to, że "someChar" jest zapytany z tej samej kolumny ORAZ kolumny, więc spodziewałem się, że będzie miał ten sam typ i długość co col4. – Incognito