PL/SQL может выполнять преобразования между различными семействами скалярных типов данных. В пределах одного семейства типы данных можно преобразовывать произвольно, но с учетом ограничений, налагаемых на переменные. Так, переменную типа CHAR(IO) нельзя преобразовать в переменную типа VARCHAR2(1), так как не будет хватать места для хранения ее значения. Ограничения точности и масштаба также могут препятствовать преобразованию, например, переменной
NUMBER(3,2) в переменную NUMBER(3) и наоборот. В случае нарушения ограничения компилятор PL/SQL не выдаст сообщения об ошибке, однако ошибки могут появиться во время выполнения программы — все
зависит от значений преобразуемых переменных.
Существуют два способа преобразования типов данных: явный и неявный.
Явное преобразование типов данных
Встроенные функции преобразования, доступные в SQL, доступны и в PL/SQL. Краткое описание этих функций приведено в таблице 3.4. При необходимости их можно применять для явного преобразования типов данных, относящихся к различным семействам типов. Более подробную
информацию о функциях преобразования и примеры их использования
можно найти в главе 5.
Таблица 3.4. Функции преобразования типов данных PL/SQL и SQL
Неявное преобразование типов данных
В PL/SQL осуществляется автоматическое преобразование типов данных разных семейств, когда это возможно. Например, при помощи блока, приведенного ниже, извлекается текущее число зачетов у студента 10002:
Б этой базе данных поле current_credits имеет тип N иМБЕк(З), однако v_CurrentCredits — это переменная типа VARCHAR2(5). PL/SQL автоматически преобразует числовые данные в строку символов, а затем присваивает ее символьной переменной. PL/SQL может автоматически выполнять преобразование между:
Символьными типами и числовыми типами
Символьными типами и типами даты
Хотя в PL/SQL производится неявное преобразование типов данных, при программировании рекомендуется использовать явные функции преобразования. В следующем примере это делается при помощи функции TO_CHAR:
Преимущество такого способа заключается в том, что при желании строку символов явного формата можно использовать также в функции TO_CHAR. Это облегчает понимание программы и подчеркивает преобразование типов.
Автоматическое преобразование типов может осуществляться также при обработке в PL/SQL различных выражений (см. ниже раздел "Выражения и операции"). Для выражений применима та же рекомендация: желательно использовать явные функции преобразования типов.
< Предыдущая | Следующая > |
---|