Язык запросов SQL


Использование выражения CAST при



Использование выражения CAST при взаимодействии SQL и базового языка

Главное предназначение выражения CAST состоит в том, чтобы работать с такими типами данных, которые есть в SQL, но отсутствуют в базовом языке. Вот некоторые примеры таких типов.

  • Fortran и Pascal не имеют типов данных DECIMAL и NUMERIC.
  • Стандартный COBOL не содержит типов данных FLOAT и REAL.
  • Ни в каком языке, кроме SQL, нет типа данных DATETIME.

Предположим, что для доступа к таблицам, у которых есть столбцы с типом данных DECIMAL (5,3), вам нужен язык Fortran или Pascal. При этом требуется избежать неточности, которая может случиться, если переводить значения из этих столбцов в тип данных REAL, используемый в этих двух языках. Эту задачу можно выполнить, используя CAST для перевода данных в базовые переменные (и из базовых переменных), которые имеют тип символьной строки. Например, числовое значение 198,37 переводится в значение '0000198.37' типа CHAR(IO). Вначале в тип CHAR(IO) с помощью CAST преобразуются те данные типа DECIMAL (5,3), которые относятся к сотруднику с идентификационным номером, находящимся в базовой переменной :emp_id_var:

SELECT CAST(Salary AS CHAR(10)) INTO :salary_var

    FROM EMP

    WHERE EmpID = :emp_id_var ;

Затем приложение проверяет появившуюся в переменной :salary_var символьную строку и присваивает этой переменной новое значение, а затем с помощью следующего кода SQL обновляет базу данных:

UPDATE EMP

    SET Salary = CAST(:salary_var AS DECIMAL(5,3))

    WHERE EmpID = :emp_id_var ;

С символьными строками, такими как '000198.37', работать в языках Fortran и Pascal очень трудно, но для выполнения в этих языках нужных операций можно написать набор специальных процедур. В принципе, в любом базовом языке можно получать и обновлять любые SQL-данные, а также получать и задавать точные значения.

Вообще говоря, выражение CAST лучше всего подходит для преобразования типов данных базового языка в типы данных базы и наоборот, а не для преобразования одних типов данных базы в другие.









Начало  Назад  Вперед