Типы данных для больших объектов в SQL Server 2008. Типы данных sql server


Используемые типы данных в SQL Server

Один из основных моментов процесса создания таблицы и использования языка T-SQL – определение типов данных для ее полей. Тип данных поля таблицы определяет тип информации, которая будет размещаться в этом поле. Понятие типа данных в SQL Server полностью адекватно понятию типа данных в современных языках программирования. SQL Serverподдерживает большое число различных типов данных: текстовые, числовые, двоичные и т.д. (см. таблицу 2).

Таблица 2. Типы данных SQL Server

Название типа Описание
binary Двоичные (бинарные) значения фиксированной длины. Максимальная длина — 8000 байтов.
varbinary Двоичные данные переменной длины с максимальной длиной 8000 байтов.
bit Один бит, который принимает значения 0 или 1 (или NULL).
char Символьные данные фиксированной длины (не в Unicode-кодировке). Максимальная длина — 8000 символов.
varchar Символьные данные переменной длины (не в Unicode-кодировке), максимальная длина 8000 символов.
nchar Символьные Unicode-данные фиксированной длины. Максимальная длина — 4000 символов. Если значение короче длины поля, то оно дополняется пробелами.
nvarchar Символьные Unicode-данные переменной длины. Максимальная длина — 4000 символов.
text Данные переменной длины (не в Unicode-кодировке), максимальная длина 231 — 1 (2 147 483 647) символов.
datetime Значения дат и времени в диапазоне от 1 января 1753 г. до 31 декабря 9999 г. (точность 3.33 мс.)
Smalldatetime Значения дат и времени в диапазоне от 1 января 1900 г. до 6 июня 2079 г. (точность 1 мин.)
decimal/numeric Десятичные числа с фиксированным количеством знаков до и после запятой (точки) в диапазоне от —1038+1 до 1038—1. В обычном режиме сервер позволяет вводить не более 28 цифр (от 2 до 17 байт).
float Числа с плавающей запятой в диапазоне от — 1.79*10+ 308 до 1.79*10 + 308-1 (точность до 15 цифр, 8 байт)
real Числа с плавающей запятой в диапазоне от -3.40*10+ 38 до 3.40*10 + 38-1 (точность до 7 цифр, 4 байта).
Tinyint Целые числа от 0 до 255. Размер (в байтах) — 1.
int Целые числа в диапазоне от —231 (—2 147 483 648) до 231 — 1 (2 147 483 647). В стандарте SQL-92 синонимом для int является linteger. Размер (в байтах) — 4.
smallint Целые числа 215 (-32 768) до 215 - 1 (32 767). Размер (в байтах) -2 (может включать не более 5 десятичных цифр).
bigint Целые числа в диапазоне от -263 (-9 223 372 036 854 775 808) до 263-1 (9 223 372 036 854 775 807). Размер (в байтах) – 8
image Двоичные данные переменной длины. Максимальная длина — 231 — 1(2 147 483 647) байтов.
money Числа в денежном формате в диапазоне —263 (—922 337 203 685 477.5808) до 263 -1(+922 337 203 685 477.5807) с точностью 0,0001 от денежной единицы. Размер 8 байт.
smallmoney Денежные величины от —214 748.3648 до +214 748.3647. Размер 4 байта.
Sql_variant Тип данных, позволяющий хранить любые типы данных, кроме text, ntext, timestamp и IMAGE.
Timestamp Специальное уникальное для данной базы данных значение, устанавливаемое автоматически при добавлении/обновлении записи. Размер (в байтах) — 8.
uniqueidentifier Специальный глобально уникальный идентификатор.

Приведем краткий обзор типов данных SQL Server [6,7,10,13].

Для хранения символьной информации используются символьные типы данных, к которым относятся CHAR (длина), VARCHAR (длина), NCHAR (длина), NVARCHAR (длина), где параметр «длина» определяет размер поля. Последние два предназначены для хранения символов Unicode. Максимальное значение длины ограничено 8000 знаками (4000 – для символов Unicode).

Хранение символьных данных большого объема (до 2 Гб) осуществляется при помощи текстовых типов данных TEXT и NTEXT.

К целочисленным типам данных относятся INT (INTEGER), SMALLINT, TINYINT, BIGINT. Для хранения данных целочисленного типа используется, соответственно, 4 байта (диапазон от -231 до 231-1), 2 байта (диапазон от -215 до 215-1), 1 байт (диапазон от 0 до 255) или 8 байт (диапазон от -263 до 263-1). Объекты и выражения целочисленного типа могут применяться в любых математических операциях.

Числа, в составе которых есть десятичная точка, называются нецелочисленными (или вещественными). Нецелочисленные данные разделяются на два типа – десятичные и приблизительные.

К десятичным типам данных относятся типы DECIMAL [(точность[,масштаб])] или DEC и NUMERIC [(точность[,масштаб])]. Типы данных DECIMAL и NUMERIC позволяют самостоятельно определить формат точности числа с плавающей запятой. Параметр точность указывает максимальное количество цифр вводимых данных этого типа (до и после десятичной точки в сумме), а параметр масштаб – максимальное количество цифр, расположенных после десятичной точки. В обычном режиме сервер позволяет вводить не более 28 цифр, используемых в типах DECIMAL и NUMERIC (от 2 до 17 байт).

К приблизительным типам данных относятся FLOAT (точность до 15 цифр, 8 байт) и REAL (точность до 7 цифр, 4 байта). Эти типы представляют данные в формате с плавающей запятой, т.е. для представления чисел используется мантисса и порядок, что обеспечивает одинаковую точность вычислений независимо от того, насколько мало или велико значение.

Для хранения информации о дате и времени предназначены такие типы данных, как DATETIME и SMALLDATETIME, использующие для представления даты и времени 8 и 4 байта соответственно.

Типы данных MONEY и SMALLMONEY делают возможным хранение информации денежного типа; они обеспечивают точность значений до 4 знаков после запятой и используют 8 и 4 байта соответственно.

Тип данных BIT позволяет хранить один бит, который принимает значения 0 или 1.

В среде SQL Server реализован ряд специальных типов данных.

Тип данных TIMESTAMP применяется в качестве индикатора изменения версии строки в пределах базы данных.

Тип данных UNIQUEIDENTIFIER используется для хранения глобальных уникальных идентификационных номеров.

Тип данных SYSNAME предназначен для идентификаторов объектов.

Тип данных SQL_VARIANT позволяет хранить значения любого из поддерживаемых SQL Server типов данных за исключением TEXT, NTEXT, IMAGE и TIMESTAMP.

 

 

Дата добавления: 2015-07-08; просмотров: 187 | Нарушение авторских прав

Читайте в этой же книге: ББК 32.973 | Введение | Преимущества архитектуры клиент-сервер | Создание и удаление представлений | Преимущества и недостатки представлений. | Понятие хранимой процедуры | Создание, изменение и удаление хранимых процедур | Выполнение хранимой процедуры | Использование MS SQL Server Management Studio для работы с объектами базы данных | Создание и сохранение базы данных |mybiblioteka.su - 2015-2018 год. (0.005 сек.)

mybiblioteka.su

Типы данных для больших объектов в SQL Server 2008 | Windows IT Pro/RE

. Как правило, эти изображения используются для демонстрации внешнего вида продуктов или другой графической информации на сайтах, и при этом они могут быть очень большими.

В SQL Server имеется много типов данных, которые могут применяться для различных типов LOB-хранилищ, но выбор правильного типа для LOB-хранилища может оказаться очень сложным, если вы вообще захотите хранить большие объекты в самой базе данных. Многие администраторы баз данных предпочитают хранить большие объекты вне баз данных. Основное правило такое: наилучшая производительность при работе с LOB-объектами размером менее 256 Кбайт достигается при их хранении в базе данных, с объектами размером более 1 Мбайт — вне БД.

Хранение LOB-объектов вне базы данных дает выигрыш в производительности, но также создает риски, так как отсутствует встроенный механизм обеспечения целостности данных. Чтобы помочь найти оптимальный способ хранения LOB-данных, необходимо понять различия между типами данных LOB в SQL Server.

1. TEXT. Данный тип используется для текстовых данных переменной длины без поддержки Unicode, такой тип не может служить для хранения двоичных данных. Тип данных TEXT поддерживает данные размером до 2 Гбайт (2^31–1,2147483647). Тип TEXT использовать не рекомендуется, но он еще присутствует в SQL Server 2008 R2.

2. NTEXT. Используется для текстовых данных переменной длины с поддержкой Unicode; как и TEXT, этот тип не поддерживает двоичные данные. Тип NTEXT поддерживает данные размером до 1 Гбайт (2^30–1,1073741823). Тип NTEXT использовать не рекомендуется, но он еще присутствует в SQL Server 2008 R2.

3. IMAGE. Используется для двоичных данных переменной длины; тип данных IMAGE — традиционный тип LOB-хранилищ для SQL Server, в котором можно хранить как текстовые, так и двоичные данные. Тип IMAGE поддерживает данные размером до 2 Гбайт (2^31–1,2147483647). Этот тип данных использовать не рекомендуется, но он еще присутствует в SQL Server 2008 R2.

4. VARCHAR (MAX). Используется для текстовых данных переменной длины без поддержки Unicode. Тип VARCHAR (MAX) поддерживает данные размером до 2 Гбайт (2^31–1,2147483647). Этот тип данных появился в SQL Server 2005 и является рекомендуемым к использованию.

5. NVARCHAR (MAX). Используется для текстовых данных переменной длины с поддержкой Unicode; тип NVARCHAR (MAX) поддерживает данные размером до 1 Гбайт (2^30–1,1073741823). Этот тип данных появился в SQL Server 2005 и является рекомендуемым к использованию.

6. FILESTREAM. Тип данных FILESTREAM сочетает производительность доступа к LOB-объектам напрямую через файловую систему NTFS с целостностью и прямым доступом через механизм реляционных баз данных SQL Server. Он может использоваться как для двоичных, так и для текстовых данных и поддерживает файлы величиной вплоть до размера дискового тома. Использование типа FILESTREAM разрешается путем комбинирования настроек SQL Server и соответствующей базы данных и типа данных VARBINARY (MAX). Тип данных FILESTREAM появился в SQL Server 2008 и является рекомендуемым к использованию. Дополнительную информацию об этом типе данных можно найти в статье «Using SQL Server 2008’s FILESTREAM Data Type» по адресу http://www.sqlmag.com/article/tsql3/using-sql-server-2008-s-filestream-data-type.aspx).

7. XML. Используется для хранения данных в формате XML. Тип XML также можно использовать как тип для хранения больших объемов данных. Он поддерживает данные размером до 2 Гбайт (2^31–1,2147483647). Тип данных XML появился в SQL Server 2005 и является рекомендуемым к использованию.

8. VARBINARY. Тип данных VARBINARY, строго говоря, не является типом для хранения больших объектов, так как его размер ограничен 8000 байт. Его можно задействовать для хранения небольших объемов двоичных данных.

Майкл Оти ([email protected]) — технический директор Windows IT Pro и SQL Server Magazine, автор Microsoft SQL Server 2008 New Features (Osborne/McGraw-Hill)

www.osp.ru

Типы данных SQL Server, которые поддерживаются ArcGIS—Справка

При создании таблицы или добавлении столбца в таблицу базы данных столбцы создаются с конкретным типом данных. Типы данных представляют собой классификации, которые позволяют определить возможные значения, операции, которые могут быть выполнены для этих данных, а также каким образом данные этого поля будут храниться в базе данных.

При осуществлении доступа к таблицам баз данных через ArcGIS вы можете работать со специфическими типами данных. При осуществлении доступа к таблице базы данных через узел Подключения баз данных в дереве Каталога или слой запроса в ArcMap ArcGIS отбирает все не поддерживаемые типы данных. Если вы работаете с таблицей базы данных непосредственно, не поддерживаемые типы данных не будут отображены в интерфейсе ArcGIS и вы не сможете редактировать их в ArcGIS. Кроме того, при копировании таблиц, содержащих не поддерживаемые типы данных с использованием ArcGIS, скопированы будут только данные поддерживаемых типов. Если вы вставляете таблицу в другую базу данных или базу геоданных, колонки не поддерживаемых типов данных представлены в ней не будут.

Когда вы создаете класс пространственных объектов или таблицу в ArcGIS либо добавляете столбец к существующей таблице или классу пространственных объектов с помощью ArcGIS, существуют 12 возможных типов данных, которые можно присваивать полям. Типы данных, не соответствующие этим типам, не могут напрямую использоваться в приложениях ArcGIS.

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

Типы данных ArcGISСоздаваемые типы данных SQL ServerДругие типы данных SQL Server, которые можно просматриватьПримечания

BLOB

VARBINARY(MAX)

BINARY, IMAGE, TIMESTAMP, VARBINARY(n)

DATE

DATETIME2(7)

DATETIME2(n), DATETIME, SMALLDATETIME

DOUBLE

NUMERIC(p,s)

DECIMAL, FLOAT, MONEY, SMALLMONEY

Точность и масштаб, указанные в ArcGIS, могут повлиять на тип полученных данных, создаваемых в базе данных. Для получения более подробной информации см. раздел Типы данных полей ArcGIS.

FLOAT

NUMERIC(p,s)

REAL

Точность и масштаб, указанные в ArcGIS, могут повлиять на тип полученных данных, создаваемых в базе данных. Для получения более подробной информации см. раздел Типы данных полей ArcGIS.

GEOMETRY

INT, GEOMETRY, GEOGRAPHY

В многопользовательской базе геоданных тип создаваемых данных SQL Server зависит от параметра GEOMETRY_STORAGE ключевого слова конфигурации, использующегося при создании класса пространственных объектов. SDEBINARY = INT; GEOMETRY = столбец GEOMETRY; GEOGRAPHY = столбец GEOGRAPHY.

В настольных базах геоданных и базах геоданных рабочих групп используется тип GEOMETRY.

В базе данных вы выбираете использование GEOMETRY или GEOGRAPHY при создании класса пространственных объектов.

ArcGIS не поддерживает следующие подтипы геометрии:

  • CircularString
  • CompoundCurve
  • CurvePolygon
  • GeometryCollection

GLOBAL ID

UNIQUEIDENTIFIER

Поддерживается только базами геоданных.

GUID

UNIQUEIDENTIFIER

LONG INTEGER

INT

RASTER

INT, ST_RASTER

Растры поддерживаются только базами геоданных.

В настольных базах геоданных и базах геоданных рабочих групп растры создаются в качестве данных типа INT.

В многопользовательских базах геоданных тип создаваемых данных SQL Server зависит от ключевого слова конфигурации, использующегося при создании столбца растра. Если параметр RASTER_STORAGE ключевого слова равен BINARY, создается столбец INT, а если он равен ST_RASTER – создается столбец ST_Raster.

Вам надо отдельно настроить ST_Raster в многопользовательской базе геоданных, если вы собираетесь его использовать. Для получения инструкций обратитесь к разделу Установка типа ST_Raster в SQL Server.

OBJECT ID

INT(4) when created in an enterprise geodatabase

INTEGER with IDENTITY property when created in a database

В ArcGIS тип ObjectID соответствует столбцу с идентификаторами записей (ID) таблицы (или класса объектов). В таблице может быть только один.

SHORT INTEGER

SMALLINT

BIT, TINYINT

TEXT

VARCHAR, NVARCHAR, VARCHAR(MAX), NVARCHAR(MAX)

CHAR, NCHAR

Типы данных SQL Server, которые поддерживаются ArcGIS

Текстовые типы данных

Если вы создаете поле VARCHAR или VARCHAR(MAX) в базе данных SQL Server, то оно будет совмещено с типом данных ArcGIS TEXT при просмотре в ArcGIS. Если вы создадите поле TEXT в базе данных SQL Server в ArcGIS, то будет использоваться NVARCHAR или NVARCHAR(MAX).

В случае если параметр конфигурации UNICODE_STRING в многопользовательской базе геоданных равен FALSE, а длина текстового поля – 7999 символов и менее, используется VARCHAR.

Если параметр конфигурации UNICODE_STRING имеет значение FALSE, а длина текстового поля больше или равна 8000 символов, используется VARCHAR(MAX).

Если параметр конфигурации UNICODE_STRING имеет значение TRUE, а длина текстового поля меньше или равна 3 999 знаков, используется NVARCHAR.

Если параметр конфигурации UNICODE_STRING имеет значение TRUE, а длина текстового поля больше или равна 4 000 символов, используется NVARCHAR(MAX).

Геометрические типы данных

Как указано в таблице, ArcGIS создает и может работать в SQL Server с тремя типами геометрических данных: SQL Server geometry, SQL Server geography и Compressed binary (сжатый двоичный). Дополнительные сведения об использовании геометрического или географического типа в ArcGIS см. в Пространственные типы SQL Server и ArcGIS.

Сжатый бинарный формат

Тип Esri compressed binary использует механизм бинарного хранения для хранения геометрии пространственных объектов. Хранение геометрии Compressed binary может использоваться только в базах геоданных. Сжатый бинарный класс пространственных объектов состоит из трех таблиц: бизнес-таблицы, таблицы объектов и таблицы пространственного индекса.

После проверки геометрии клиентское приложение сжимает и отсылает ее в базу геоданных, где она хранится в сжатом бинарном формате в таблице пространственных объектов, или F-таблице. Сжатие геометрии клиентским приложением снимает эту задачу с сервера базы данных и сокращает время на пересылку этой геометрии. Оно также обеспечивает эффективное хранение и извлечение пространственных данных, экономя пространство, необходимое для хранения данных, на целых 40 процентов.

В бизнес-таблице находятся атрибуты и пространственный столбец. Пространственный столбец является ключом к таблице объектов и таблице пространственного индекса.

Отношения между бизнес-таблицей и таблицей объектов управляются через пространственный столбец и столбец идентификатора объектов (feature ID (FID) column). Данный ключ, который поддерживается ArcGIS, является уникальным.

Геометрия SQL Server

Здесь представлено краткое описание геометрического типа. Более подробные сведения о геометрическом типе и его использовании можно найти в документации к Microsoft SQL Server.

  • Тип геометрии поддерживает любую систему координат X/Y.
  • Для отображения и пространственных сравнений используются вычисления на плоскости (Евклидовы) и прямолинейная интерполяция между вершинами.
  • Соответствует спецификации Open Geospatial Consortium (OGC) Simple Features for SQL версии 1.1.9 и совместимо с ISO-стандартом SQL MM.

География SQL Server

Здесь представлено краткое описание географического типа. Более подробные сведения о географическом типе и его использовании можно найти в документации к Microsoft SQL Server.

  • Тип geography поддерживает многие стандартные географические системы координат, например, широта-долгота GPS.

    Microsoft рекомендует использовать SRID и географические системы координат, заданные в словаре данных SQL Server.

  • Для вычислений и пространственных сравнений используются модель эллипсоида (круглая Земля) и интерполяция отрезков линий между вершинами Great Elliptic.
  • Использует глобальный (сфероидный) экстент слоя.

    Координаты данных не могут выходить за пределы глобального экстента.

  • В SQL Server 2008 и 2008 R2 объекты должны быть меньше полушария.
  • При использовании в ArcGIS объекты не могут иметь z- или m-координаты, если используется SQL Server 2008 или 2008 R2.

Растровые типы данных

В базе геоданных на SQL Server по умолчанию используется целочисленный растровый тип. Если вы хотите получить доступ к растру базы геоданных с помощью SQL, вы можете настроить многопользовательскую базу геоданных на SQL Server на работу с типом ST_Raster.

Подробные сведения об определении объекта типа ST_Raster см. в разделе Тип данных ST_Raster.

desktop.arcgis.com

Создание псевдонима типа данных в Microsoft SQL Server на T-SQL | Info-Comp.ru

SQL Server от компании Microsoft позволяет создавать псевдоним типа данных, а также полноценный пользовательский тип данных, это можно сделать с помощью конструкции CREATE TYPE языка T-SQL, а как это реализуется, я сейчас покажу на примерах.

Пользовательский тип данных создается с помощью класса сборки в среде Microsoft.NET Framework CLR и так как мы с Вами еще не рассматривали возможность MS SQL Server работы с CLR, рассматривать создание пользовательского типа данных мы пока не будем.

А вот псевдоним типа данных можно создать и без использования CLR, так как он основывается на собственном системном типе данных. Поэтому сегодня мы будем разбирать возможность создания псевдонима типа, а также определяемого пользователем табличного типа данных, который иногда может быть достаточно полезным.

Примечание! Все примеры ниже будут рассмотрены на версии Microsoft SQL Server 2012 Express.

Псевдоним типа данных в Microsoft SQL Server

Псевдоним типа данных – это тип данных, который основывается на уже существующем системном типе. Псевдонимы типов данных можно использовать в тех случаях, когда нам необходимо, и мы должны быть в этом уверены, чтобы в нескольких таблицах определенные столбцы имели одинаковые тип, длину данных, и возможность иметь значение NULL.

Также их можно использовать для упрощения написания и понимания объектов базы данных, т.е. если Вы в базе данных для определенных целей достаточно часто используете один и тот же тип данных, Вы можете создать его псевдоним с понятным названием, которое будет лучше характеризовать назначение данного типа данных.

Для создания псевдонима типа данных необходимо придумать его название, определить системный тип данных, на котором будет основываться псевдоним, а также указать может или не может создаваемый псевдоним принимать значение NULL, если не указать, то будет применяться значение по умолчанию, которое разрешает использование NULL.

Для создания и удаления псевдонима типа данных можно использовать как графические инструменты Management Studio (SSMS), так и язык T-SQL, т.е. конструкцию CREATE TYPE для создания и DROP TYPE для удаления.

Если псевдоним типа данных создать в пользовательской базе данных, то он будет присутствовать только в ней, но если создать псевдоним в базе данных model (шаблон для создания всех пользовательских баз), он будет присутствовать во всех новых пользовательских базах данных.

Итак, давайте для примера создадим псевдоним типа данных, при этом я покажу возможность его создания как с помощью графических инструментов SSMS, так и с помощью CREATE TYPE языка T-SQL. Допустим, название нашего тестового псевдонима будет MyTestType, основан он будет на системном типе VARCHAR с длиной 100, и он будет иметь возможность принимать значение NULL.

Примечание! Для примера создавать псевдоним типа данных я буду в базе данных Test, которую я предварительно создал. О том, как создавать базы данных мы говорили в материале «Как создать базу данных в MS SQL Server».

Создание псевдонима типа данных с помощью Management Studio

Для того чтобы создать псевдоним типа данных с помощью графических инструментов Management Studio, необходимо в обозревателе объектов открыть базу данных, в которой планируется создать псевдоним типа данных и найти пункт «Определяемые пользователем типы данных», полный путь – «База данных->Test-> Программирование -> Типы -> Определяемые пользователем типы данных».

Затем щелкнуть правой кнопкой мыши по данному пункту и выбрать «Создать определяемый пользователем тип данных».

В итоге откроется окно для создания псевдонима типа данных, где мы указываем схему, имя псевдонима, тип данных, на основе которого будет создан псевдоним, его длину, а также отмечаем галочку «Разрешить значения NULL», т.е. этот псевдоним может принимать значения NULL, жмем «OK».

В обозревателе объектов в пункте «Типы» отобразится созданный нами псевдоним типа данных с названием MyTestType.

Создание псевдонима типа данных с помощью CREATE TYPE

Для создания псевдонима типа данных в T-SQL используется конструкция CREATE TYPE. Для того чтобы создать псевдоним, открываем окно редактирования запроса («Создать запрос») и пишем следующую инструкцию:

CREATE TYPE dbo.MyTestType FROM VARCHAR (100) NULL GO

Данной инструкцией можно заменить все действия, которые мы делали чуть выше, когда для создания псевдонима типа использовали графические инструменты Management Studio, т.е. эти способы абсолютно идентичны, они создают одинаковые псевдонимы.

Достаточно много SQL инструкций языка T-SQL мы рассмотрели в «Справочнике T-SQL для начинающих», поэтому кому интересно можете посмотреть.

Определяемый пользователем табличный тип данных в Microsoft SQL Server

В SQL сервере есть специальный тип данных Table, который используется для хранения результирующего набора данных. Другими словами мы можем объявить переменную, которая может хранить табличные данные, структура которых определяется в момент объявления табличной переменной. Определяемый пользователем табличный тип данных основан на системном табличном типе данных.

Возможность создавать табличные типы данных нужна нам, для того чтобы упростить создание табличных переменных с часто используемой структурой, а также для создания параметров, которые возвращают табличные значения, например, чтобы отправлять несколько строк данных в хранимую процедуру или функцию, не создавая тем самым большое количество входящих параметров или временных таблиц с параметрами. В процедурах или функциях возвращающий табличное значение параметр должен быть объявлен как READONLY, т.е. только для чтения

Для создания определяемого пользователем табличного типа данных также как и для создания псевдонима типа используется конструкция CREATE TYPE. Для примера давайте создадим табличный тип данных, который будет содержать два столбца. Для этого в редакторе запросов среды Management Studio пишем следующий код:

CREATE TYPE dbo.MyTestTableType AS TABLE ( ProductName VARCHAR (100) NULL, Price MONEY NULL ) GO

В обозревателе объектов в пункте «Типы ->Определяемые пользователем табличные типы» отобразится созданный нами табличный тип данных.

Пример использования псевдонима типа данных и определяемого пользователем табличного типа

Для того чтобы проверить работу псевдонима типа данных и определяемого пользователем табличного типа давайте создадим процедуру, которая будет принимать два параметра. Первый параметр с типом MyTestType (т.е. VARCHAR(100)), а второй MyTestTableType (т.е. табличный тип). Возвращать она будет просто данные из входящих параметров.

Код создания процедуры:

CREATE PROCEDURE dbo.MyTestProcedure @TextComment MyTestType, @TmpTable MyTestTableType READONLY AS BEGIN SELECT TMP.*, @TextComment AS TextComment FROM @TmpTable TMP END

Теперь давайте напишем SQL инструкцию, в которой мы создадим две переменные на основе наших псевдонимов, затем присвоим им значения, и выполним только что созданную процедуру, передав ей переменные в качестве параметров.

DECLARE @TextComment MyTestType, @TestTable MyTestTableType SET @TextComment = 'Номер заказа 25.' INSERT INTO @TestTable (ProductName, Price) VALUES ('Принтер', 100) INSERT INTO @TestTable (ProductName, Price) VALUES ('Монитор', 200) EXEC dbo.MyTestProcedure @TextComment, @TestTable

Как видим, процедура работает, т.е. возвращает данные из входящих параметров. Также хотелось бы отметить, что для внесений изменений в псевдоним типа или определяемый пользователем табличный тип нужно удалить эти типы и создать заново.

Удаление псевдонима типа данных

Удалить псевдоним типа или определяемый пользователем табличный тип можно как с помощью графических инструментов среды Management Studio, так и с помощью языка T-SQL (DROP TYPE). Удаление возможно, только в том случае, если в базе данных отсутствуют таблицы, содержащие столбцы с псевдонимом типа, а также ссылающиеся на псевдоним типа или определяемый пользователем табличный тип вычисляемые столбцы, функции, процедуры или триггеры.

Давайте попробуем удалить псевдоним типа данных и определяемый пользователем табличный тип, когда в базе есть процедура, которая использует параметры на их основе.

DROP TYPE dbo.MyTestType DROP TYPE dbo.MyTestTableType

У нас возникла ошибка, поэтому перед удалением псевдонима типа данных и определяемого пользователем табличного типа необходимо удалить все ссылающиеся объекты, в нашем случае это процедура MyTestProcedure.

Пробуем еще раз с удалением процедуры.

DROP PROCEDURE dbo.MyTestProcedure DROP TYPE dbo.MyTestType DROP TYPE dbo.MyTestTableType

В этот раз все прошло успешно.

Заметка! Если Вас интересует язык T-SQL, то рекомендую почитать мою книгу «Путь программиста T-SQL», в ней я подробно, с большим количеством примеров, рассказываю практически про все конструкции языка Transact-SQL.

На этом у меня все, надеюсь, материал был Вам полезен. Пока!

Похожие статьи:

info-comp.ru