игра брюс 2048
Главная / Базы данных / Программирование в Microsoft SQL Server 2000 / Тест 27

Программирование в Microsoft SQL Server 2000 - тест 27

Упражнение 1:
Номер 1
SQL Server 2000 поддерживает различные типы курсоров:

Ответ:

 (1) курсоры API (курсоры программного интерфейса приложений) 

 (2) курсоры OLE 

 (3) курсоры T-SQL 

 (4) ODBC-курсоры 

 (5) на основе утилиты Query Analyzer 


Номер 2
Курсоры T-SQL создаются с помощью команды:

Ответ:

 (1) CREATE CURSOR 

 (2) DECLARE CURSOR 

 (3) DECLARE VIRTUAL VIEW 


Номер 3
При создании курсора T-SQL на команду SELECT накладываются ограничения:

Ответ:

 (1) команда SELECT не может возвращать несколько результирующих множеств 

 (2) команда SELECT не может содержать фраз ORDER BY и HAVING 

 (3) команда SELECT не может содержать фразу COMPUTE или COMPUTE BY, используемые для агрегирования результатов 

 (4) команда SELECT не может содержать фразу INTO для создания новой таблицы 

 (5) невозможность использования фразы WHERE 


Упражнение 2:
Номер 1
Под чувствительностью курсора следует понимать:

Ответ:

 (1) способность осуществления прокрутки как вперед, так и назад, либо только вперед 

 (2) быстродействие курсора 

 (3) cпособность курсора отражать изменения в данных 


Номер 2
Под прокруткой курсора следует понимать:

Ответ:

 (1) cпособность курсора отражать изменения в данных 

 (2) способность осуществления прокрутки как вперед, так и назад, либо только вперед 

 (3) возможность обновления строк курсором 


Номер 3
Под обновлением курсора следует понимать:

Ответ:

 (1) возможность обновления строк курсором 

 (2) способность осуществления прокрутки как вперед, так и назад, либо только вперед 

 (3) cпособность курсора отражать изменения в данных 


Упражнение 3:
Номер 1
Статические курсоры характеризуются тем, что:

Ответ:

 (1) копируют в базу tempdb только те столбцы, которые уникально идентифицируют каждую строку 

 (2) ведут себя так, как если бы при каждом обращении к строке повторно выполнялся оператор SELECT 

 (3) делают как бы моментальный снимок данных, задаваемых оператором SELECT, и хранят их в базе данных tempdb 


Номер 2
Ключевые курсоры характеризуются тем, что:

Ответ:

 (1) делают как бы моментальный снимок данных, задаваемых оператором SELECT, и хранят их в базе данных tempdb 

 (2) копируют в базу tempdb только те столбцы, которые уникально идентифицируют каждую строку 

 (3) допускают только чтение. Эти виды курсора объявляются с использованием ключевого слова FAST_FORWARD, и чаще всего их называют "пожарными" курсорами 


Номер 3
Динамические курсоры характеризуются тем, что:

Ответ:

 (1) ведут себя так, как если бы при каждом обращении к строке повторно выполнялся оператор SELECT 

 (2) делают как бы моментальный снимок данных, задаваемых оператором SELECT, и хранят их в базе данных tempdb 

 (3) допускают только чтение. Эти виды курсора объявляются с использованием ключевого слова FAST_FORWARD, и чаще всего их называют "пожарными" курсорами 


Номер 4
Курсоры быстрого доступа характеризуются тем, что:

Ответ:

 (1) допускают только чтение. Эти виды курсора объявляются с использованием ключевого слова FAST_FORWARD, и чаще всего их называют "пожарными" курсорами 

 (2) копируют в базу tempdb только те столбцы, которые уникально идентифицируют каждую строку 

 (3) ведут себя так, как если бы при каждом обращении к строке повторно выполнялся оператор SELECT 


Упражнение 4:
Номер 1
Синтаксис оператора DECLARE CURSOR имеет вид:

Ответ:

 (1) DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] FOR select_statement { FOR UPDATE [ OF column_name [ ,...n ] ] }  

 (2) DECLARE cursor_name CURSOR { LOCAL | GLOBAL } { FORWARD_ONLY | SCROLL } [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ]  

 (3) DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ] FOR select_statement [ FOR UPDATE [ OF column_name [ ,...n ] ] ]  


Номер 2
Синтаксис оператора DECLARE CURSOR имеет вид:

Ответ:

 (1) DECLARE cursor_name CURSOR { LOCAL | GLOBAL } { FORWARD_ONLY | SCROLL } [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ]  

 (2) DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ] FOR select_statement [ FOR UPDATE [ OF column_name [ ,...n ] ] ]  

 (3) DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] FOR select_statement { FOR UPDATE [ OF column_name [ ,...n ] ] }  


Номер 3
Синтаксис оператора DECLARE CURSOR имеет вид:

Ответ:

 (1) DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ] FOR select_statement [ FOR UPDATE [ OF column_name [ ,...n ] ] ]  

 (2) DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] FOR select_statement { FOR UPDATE [ OF column_name [ ,...n ] ] }  

 (3) DECLARE cursor_name CURSOR { LOCAL | GLOBAL } { FORWARD_ONLY | SCROLL } [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ]  


Упражнение 5:
Номер 1

DECLARE @CustId INT 
DECLARE @CustName VARCHAR( 30 ) 
DECLARE CustCursor CURSOR FOR 
  SELECT CustId, Name 
  FROM Customer 
  ORDER BY CustId 
  FOR READ ONLY 
OPEN CustCursor 
WHILE (0 = 0) BEGIN 
  FETCH NEXT
    FROM CustCursor 
    INTO @CustId, @CustName 
  IF ( @@FETCH_STATUS <> 0 ) BREAK
  PRINT CAST ( @CustId AS VARCHAR(IO) ) + ' ' + @CustName 
END
CLOSE CustCursor 
DEALLOCATE CustCursor
    
Данный сценарий выполняет действия:
    

Ответ:

 (1) объявляются две переменные(@CustId и @CustName), при выполнении инструкции DECLARE CURSOR СОЗДАЕТСЯ результирующий набор строк инструкции SELECT. При первом выполнении инструкции FETCH NEXT считывает первую строку результирующей таблицы курсора и помещает значения ее столбцов в НОВЫЙ НАБОР СТРОК. Далее, выполняясь в цикле, инструкция FETCH NEXT считывает очередные строки результирующей таблицы и помещает их данные в ТОТ ЖЕ НАБОР СТРОК до тех пор, пока таблица не будет прочитана до конца 

 (2) объявляются две переменные(@CustId и @CustName), при выполнении инструкции DECLARE CURSOR СОЗДАЕТСЯ результирующий набор строк инструкции SELECT. При первом выполнении инструкции FETCH NEXT считывает первую строку результирующей таблицы курсора и помещает значения ее столбцов в переменные, заданные в предложении INTO. Далее, выполняясь в цикле, инструкция FETCH NEXT считывает очередные строки результирующей таблицы и помещает их данные в те же переменные до тех пор, пока таблица не будет прочитана до конца 

 (3) объявляются две переменные(@CustId и @CustName), при выполнении инструкции DECLARE CURSOR результирующий набор строк инструкции SELECT НЕ создается. Он создается при выполнении инструкции OPEN. При первом выполнении инструкции FETCH NEXT считывает первую строку результирующей таблицы курсора и помещает значения ее столбцов в переменные, заданные в предложении INTO. Далее, выполняясь в цикле, инструкция FETCH NEXT считывает очередные строки результирующей таблицы и помещает их данные в те же переменные до тех пор, пока таблица не будет прочитана до конца 


Номер 2

DECLARE @CustId INT 
DECLARE @CustName VARCHAR( 30 ) 
DECLARE CustCursor CURSOR FOR 
  SELECT CustId, Name 
  FROM Customer 
  ORDER BY CustId 
  FOR READ ONLY 
OPEN CustCursor 
WHILE (0 = 0) BEGIN 
  FETCH NEXT
    FROM CustCursor 
    INTO @CustId, @CustName 
  IF ( @@FETCH_STATUS <> 0 ) BREAK
  PRINT CAST ( @CustId AS VARCHAR(10) ) + ' ' + @CustName 
END
CLOSE CustCursor 
DEALLOCATE CustCursor
    
Данный сценарий выполняет действия:
    

Ответ:

 (1) объявляются две переменные(@CustId и @CustName), при выполнении инструкции DECLARE CURSOR СОЗДАЕТСЯ результирующий набор строк инструкции SELECT. При первом выполнении инструкции FETCH NEXT считывает первую строку результирующей таблицы курсора и помещает значения ее столбцов в переменные, заданные в предложении INTO. Далее, выполняясь в цикле, инструкция FETCH NEXT считывает очередные строки результирующей таблицы и помещает их данные в те же переменные до тех пор, пока таблица не будет прочитана до конца 

 (2) объявляются две переменные(@CustId и @CustName), при выполнении инструкции DECLARE CURSOR результирующий набор строк инструкции SELECT НЕ создается. Он создается при выполнении инструкции OPEN. При первом выполнении инструкции FETCH NEXT считывает первую строку результирующей таблицы курсора и помещает значения ее столбцов в переменные, заданные в предложении INTO. Далее, выполняясь в цикле, инструкция FETCH NEXT считывает очередные строки результирующей таблицы и помещает их данные в те же переменные до тех пор, пока таблица не будет прочитана до конца 

 (3) объявляются две переменные(@CustId и @CustName), при выполнении инструкции DECLARE CURSOR СОЗДАЕТСЯ результирующий набор строк инструкции SELECT. При первом выполнении инструкции FETCH NEXT считывает первую строку результирующей таблицы курсора и помещает значения ее столбцов в НОВЫЙ НАБОР СТРОК. Далее, выполняясь в цикле, инструкция FETCH NEXT считывает очередные строки результирующей таблицы и помещает их данные в ТОТ ЖЕ НАБОР СТРОК до тех пор, пока таблица не будет прочитана до конца 


Номер 3

DECLARE @CustId INT 
DECLARE @CustName VARCHAR( 30 ) 
DECLARE CustCursor CURSOR FOR 
  SELECT CustId, Name 
  FROM Customer 
  ORDER BY CustId 
  FOR READ ONLY 
OPEN CustCursor 
WHILE (0 = 0) BEGIN 
  FETCH NEXT
    FROM CustCursor 
    INTO @CustId, @CustName 
  IF ( @@FETCH_STATUS <> 0 ) BREAK
  PRINT CAST ( @CustId AS VARCHAR(IO) ) + ' ' + @CustName 
END
CLOSE CustCursor 
DEALLOCATE CustCursor
    
Данный сценарий выполняет действия:
    

Ответ:

 (1) объявляются две переменные(@CustId и @CustName), при выполнении инструкции DECLARE CURSOR результирующий набор строк инструкции SELECT НЕ создается. Он создается при выполнении инструкции OPEN. При первом выполнении инструкции FETCH NEXT считывает первую строку результирующей таблицы курсора и помещает значения ее столбцов в переменные, заданные в предложении INTO. Далее, выполняясь в цикле, инструкция FETCH NEXT считывает очередные строки результирующей таблицы и помещает их данные в те же переменные до тех пор, пока таблица не будет прочитана до конца 

 (2) объявляются две переменные(@CustId и @CustName), при выполнении инструкции DECLARE CURSOR СОЗДАЕТСЯ результирующий набор строк инструкции SELECT. При первом выполнении инструкции FETCH NEXT считывает первую строку результирующей таблицы курсора и помещает значения ее столбцов в НОВЫЙ НАБОР СТРОК. Далее, выполняясь в цикле, инструкция FETCH NEXT считывает очередные строки результирующей таблицы и помещает их данные в ТОТ ЖЕ НАБОР СТРОК до тех пор, пока таблица не будет прочитана до конца 

 (3) объявляются две переменные(@CustId и @CustName), при выполнении инструкции DECLARE CURSOR СОЗДАЕТСЯ результирующий набор строк инструкции SELECT. При первом выполнении инструкции FETCH NEXT считывает первую строку результирующей таблицы курсора и помещает значения ее столбцов в переменные, заданные в предложении INTO. Далее, выполняясь в цикле, инструкция FETCH NEXT считывает очередные строки результирующей таблицы и помещает их данные в те же переменные до тех пор, пока таблица не будет прочитана до конца 


Упражнение 6:
Номер 1
Команда FETCH:

Ответ:

 (1) объединяет строки курсора в новую таблицу или представление 

 (2) изменяет исходное значение во множестве модифицируемого курсора 

 (3) извлекает указанную строку из множества строк курсора 


Номер 2
Позиционное обновление представляет собой:

Ответ:

 (1) обновление курсора средствами Enterprise Manager 

 (2) изменение исходных значений во множестве модифицируемого курсора 

 (3) извлечение указанной строки из множества строк курсора 


Номер 3
Функция CURSOR_STATUS:

Ответ:

 (1) позволяет определить статус курсора 

 (2) определяет назначение и функции курсора 

 (3) предназначена для позиционного обновления курсора 


Упражнение 7:
Номер 1
Синтаксис команды позиционного обновления имеет вид:

Ответ:

 (1) UPDATE таблица_или_представление ( SET список_для_модификации )  

 (2) UPDATE таблица_или_представление [ SET список_для_модификации ] [ WHERE CURRENT OF курсор_или_переменная ]  

 (3) UPDATE таблица_или_представление SET список_для_модификации WHERE CURRENT OF курсор_или_переменная  


Номер 2
Синтаксис функции CURSOR_STATUS имеет вид:

Ответ:

 (1) CURSOR_STATUS ( { 'local' , 'cursor_name' } { 'variable' , 'cursor_variable' } )  

 (2) CURSOR_STATUS ( { 'local' , 'cursor_name' } | { 'global' , 'cursor_name' } | { 'variable' , 'cursor_variable' } )  

 (3) CURSOR_STATUS [ { 'local' , 'cursor_name' } ]  


Номер 3
Синтаксис оператора FETCH имеет вид:

Ответ:

 (1) FETCH [ [ NEXT | PRIOR | FIRST | LAST | ABSOLUTE { n | @nvar } | RELATIVE { n | @nvar } ] FROM ] { { [ GLOBAL ] cursor_name } | @cursor_variable_name } [ INTO @variable_name [ ,...n ] ]  

 (2) FETCH { [ NEXT | PRIOR | FIRST | LAST | ABSOLUTE { n | @nvar } | RELATIVE { n | @nvar } ] FROM } [ { [ GLOBAL ] cursor_name } | @cursor_variable_name ]  

 (3) FETCH [ NEXT | PRIOR ] FROM ] [ INTO @variable_name [ ,...n ] ]  




Главная / Базы данных / Программирование в Microsoft SQL Server 2000 / Тест 27