Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_shilina.doc
Скачиваний:
6
Добавлен:
19.09.2019
Размер:
275.46 Кб
Скачать
  1. Переменные,типы переменных в Transact-sql.

Для сохранения промежуточных данных, хранимых в процедуре и функциях, используются переменные, имя которых должно начинаться с “@”.

Объявление переменных:

DECLARE @a Int , @c char(50)

Присвоение значений переменным:

1.использование ключевого слова SET:

DECLARE @name char(20)

SET @name = ‘Документ’

SET @=52867

2.С помощью команды SELECT:

DECLARE @a BIGIN ,@name char(20)

SELECT @name = ‘Документ’

SELECT @a = count (*)

FROM S

SELECT @a As N

С помощью SELECT можно присвоить несколько значений:

SELECT @a = 12 , @ name = ‘Справка’

3.Сочетание SET и запроса:

DECLARE @Z INT

SET @Z = (SELECT SUM(QTY) FROM SP) PRINT @Z

Типы переменных

CHAR; - NUMERIC;

VAR CHAR; - DECIMAL;

NUMBER; - DATE TIME;

MANY И ДР. - Таблица

При объявлении переменных типа NUMERIC и DECIMAL задается максимальное количество знаков:

DECLARE @a NUMERIC (10,2)

SELECT @a = 10.23 , @b = 100.3

DECLARE @b NUMERIC (10,1)

SELECT @a , @b , @a +@b = 110.53

Тип таблица:

DECLARE @t Table(S CHAR (5) , STATUS INT)

INSERT INTO @t (S, STATUS)

VALUES (‘S1’ , 10)

SELECT * FROM @t

Результат:

S #

STATUS

S1

10

  1. Команда if…else Пример программы.

Имеет следующий вид:

IF Условие

Команда 1

Else

Команда 2

Если условие возвращает истинное значение (TRUE), то выполняется Команда 1. Если условие IF не удовлетворяется и логическое выражение возвращает FALSE, то выполняется Команда 2.

Проверки IF могут находиться внутри другого IF или следующего ELSE. Ограничение количества вложенных уровней зависит от свободной памяти.

Пример:

Проверка существования определенной записи в таблице S перед обновлением команды:

Declare @MyChar Char(5);

Set @MyChar=(Select S# From S Where S#=’S1’);

If @MyChar=’S1’

Print ‘Record find’;

Else

Print ‘record not found’:

  1. BEGIN...END (Transact-SQL

Блок Begin…End включает в себя последовательность инструкций языка Transact-SQL, позволяя выполнять группу инструкций Transact-SQL. Ключевые слова BEGIN и END относятся к языку потока управления.

 Синтаксические обозначения в Transact-SQL

 Синтаксис

BEGIN

     {

        sql_statement | statement_block

     }

END

 Аргументы

sql_statementstatement_block }

Любая допустимая инструкция или группа инструкций языка Transact-SQL, определенная с помощью блока инструкций.

 Замечания

Блоки BEGIN...END могут быть вложенными.

Хотя все инструкции языка Transact-SQL допустимы в пределах блока BEGIN...END, некоторые инструкции языка Transact-SQL не следует группировать вместе в пределах одного пакета (блока инструкций). Дополнительные сведения см. в разделе Пакеты и в разделах, посвященных использованию отдельных инструкций.

Пример

В следующем примере ключевые слова BEGIN и END определяют ряд инструкций языка Transact-SQL, которые будут выполняться вместе. Если не включить блок BEGIN...END, будут выполнены оба оператора ROLLBACK TRANSACTION и возвращены оба сообщения PRINT.

USE AdventureWorks2008R2;

GO

BEGIN TRANSACTION;

GO

IF @@TRANCOUNT = 0

BEGIN

    SELECT FirstName, MiddleName

    FROM Person.Person WHERE LastName = 'Adams';

    ROLLBACK TRANSACTION;

    PRINT N'Rolling back the transaction two times would cause an error.';

END;

ROLLBACK TRANSACTION;

PRINT N'Rolled back the transaction.';

GO

/*

Rolled back the transaction.

*/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]