EXEC SQL
UPDATE <таблица>
SET <столбкц> = <новое значение столбца>
WHERE CURRENT OF <имя курсора>;
UPDATE затем обновляет строку, в позиции которой стоит курсор.
Динамический SQL
Динамический SQL
Динамический SQL
Мы используем статический SQL когда знаем формат и компоненты SQL оператора в момент создания приложения. Таблицы уже существуют и мы знаем столбцы, которые мы желаем получить или изменить и так далее. Мы можем не знать число извлекаемых строк, но можем использовать курсоры для манипуляции с ними.
Мы используем динамический SQL когда не знаем часть или весь SQL -оператор в момент его описания.
Разработчики QMF использовали динамический SQL, т. к. они не знали какие SQL операторы будут введены пользователем.
Динамический против статического SQL
Create Table names
(… char C1[] = “Create Table names
Select name (… “;
from names
Prepare S1 from C1;
Execute S1;
Пландоступа char C2[] = “Select name
не существует from names”
Prepare S2 from C2;
Таблица создана
и использовалась Execute S2;
динамически
Когда мы прекомпилируем статический SQL, объекты, которыми он манипулирует, должны существовать. Они не могут, следовательно, быть созданы и выполняться манипуляции над ними в том же самом приложении.
Используя динамический SQL мы можем создавать объекты и работать с ними в той же самой программе.
Однако, для динамического SQL существуют некоторые непроизводительные издержки. Анализ и проверка синтаксиса предложений динамического SQL выполняется DB2 во время выполнения приложения, кроме того мы теряем выгоду от оптимизации на этапе прекомпиляции. Динамический SQL хотя и более гибкий, но в то же время более медленный.
Анализ
- Более быстрый
- Должно быть заново выполнена операция связывания после изменений в базе данных
- Все объекты должны существовать
- Создается план доступа
- Из-за лучших предположений оптимизатора, может быть быстрее для простых запросов
- Не требует повторного связывания
- Может быть быстрее, если вместо хост-переменных используются константы
Обычно статический SQL быстрее, чем динамический SQL, хотя существуют исключения. Если оператор SELECT очень прост (быстро может быть проанализирован и создан план выполнения), то его лучше выполнить, используя динамический SQL, потому что оптимизатор может принять во внимание текущее состояние статистики базы данных.
Динамический SQL, использующий константы, а не host-переменные в предложении WHERE, может быть быстрее.
Например:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.