Как найти длину длинного столбца в таблице

У меня есть длинный столбец с именем 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;
/
Другие вопросы по тегам