Как найти длину длинного столбца в таблице
У меня есть длинный столбец с именем FileSize в таблице с именем Files.
Для достижения цели я сделал следующее:
Я написал этот скрипт PL/SQL, чтобы найти размер
declare
long_var LONG:=0;
begin
dbms_output.put_line(length(long_var));
execute immediate 'SELECT FILESIZE INTO long_var FROM FILES';
dbms_output.put_line(length(long_var));
end;
Но это выдает ошибку:
ORA-00905: missing keyword
ORA-06512: at line 5
Я делал следующее, как я увидел по следующей ссылке: http://www.techonthenet.com/oracle/questions/long_length.php
Кто-нибудь может подсказать, что я делаю неправильно, так как не могу определить ключевое слово, которое мне не хватает
Благодарю.
1 ответ
Вам не нужно EXECUTE IMMEDIATE в этом контексте.
DECLARE
long_var long:=0;
BEGIN
DBMS_OUTPUT.PUT_LINE(LENGTH(long_var));
SELECT filesize INTO long_var FROM files;
DBMS_OUTPUT.PUT_LINE(LENGTH(long_var));
END;
/
EXECUTE IMMEDIATE запускает отдельный оператор SQL из вашего кода PL/SQL. Он не может ничего вернуть вашему коду. Используемый вами оператор не является допустимым SQL, поэтому вы получаете ORA-00905. Это действительный код PL/SQL, и он работает так, как вы ожидаете после удаления EXECUTE IMMEDIATE.
редактировать
Код для ответа на вопрос: для этого можно использовать более одной строки.
DECLARE
CURSOR C1 IS
SELECT filesize FROM files;
BEGIN
FOR files IN c1
LOOP
DBMS_OUTPUT.PUT_LINE(LENGTH(files.filesize));
END LOOP;
END;
/