Выполнение SQL инструкций с помощью SQL EXECUTE

Применение

Вы используете SQL EXECUTE в сочетании с различными SQL-инструкциями.

Условия

  • Введено кодовое число 555343
  • Таблица существует
  • Подходящее имя таблицы
  • Имена таблиц и столбцов должны начинаться с букв и не должны содержать математические символы, например +. Наличие подобных символов может вследствие особенности SQL-команд привести к проблемам при чтении и записи данных.

Описание функций

Черные стрелки и соответствующий синтаксис показывают внутренние процессы при SQL EXECUTE. Серые стрелки и относящийся к ним синтаксис непосредственно не относятся к команде SQL EXECUTE.

Система ЧПУ предоставляет следующие операторы SQL в команде SQL EXECUTE:

Инструкция

Функция

SELECT

Выбор данных

CREATE SYNONYM

Создание синонима (длинные пути заменяются коротким именем)

DROP SYNONYM

Удаление синонима

CREATE TABLE

Создание таблицы

COPY TABLE

Копирование таблицы

RENAME TABLE

Переименование таблицы

DROP TABLE

Удаление таблицы

INSERT

Добавить строку в таблицу

ОТМЕНИТЬ

Обновление строк из таблицы

DELETE

Удаление строк из таблицы

ALTER TABLE

  • При помощи ADD вставляются столбцы таблицы
  • При помощи DROP столбцы таблицы удаляются

RENAME COLUMN

Переименование столбцов таблицы

SQL EXECUTE с SQL-инструкцией SELECT

SQL-сервер сохраняет данные построчно в результирующий набор (объем результатов). Строки нумеруются по возрастанию, начиная с 0. Этот номер строки (INDEX) используют команды SQL FETCH и UPDATE.

SQL EXECUTE в сочетании с SQL-инструкцией SELECT выбирает табличные значения, передаёт их в Result-set и при этом всегда открывает транзакцию. В противоположность SQL-команде SQL SELECT комбинация из SQL EXECUTE и инструкции SELECT даёт возможность одновременного выбора нескольких столбцов и строк.

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

В функции SQL... "SELECT...ORDER BY..." задайте критерий сортировки. Передаваемые значения состоят из обозначения столбцов и ключевого слова (ASC сортировки по возрастанию или DESC - по убыванию. Если данная опция не используется, то строки сохраняются в случайной последовательности.

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

Пустой Result-set: если нет строк, соответствующих критериям выбора, SQL-сервер выдает действительный HANDLE без табличных записей.

Условия WHERE

Условие

Программирование

равно

= ==

не равно

!= <>

меньше

<

меньше или равно

<=

больше

>

больше или равно

>=

пустой

IS NULL

не пустой

IS NOT NULL

Соединение нескольких условий:

Логическое И

AND

Логическое ИЛИ

OR

Рекомендации

  • Вы также можете определить синоним для ещё не созданной таблицы.
  • Последовательность столбцов в создаваемом файле соответствует последовательности в инструкции AS SELECT.
  • Для SQL команд внутри инструкции вы можете использовать простые или составные QS параметры.
  • Конкатенация буквенно-цифровых значений

  • Когда вы проверяете содержимое параметра QS в дополнительной индикации состояния (вкладка QPARA), то вы видите только первые 30 символов, а не целое содержимое.
  • Вкладка QPARA

Пример

Пример: выбор строк таблицы

11 SQL BIND Q881 "Tab_Example.Position_Nr"

12 SQL BIND Q882 "Tab_Example.Measure_X"

13 SQL BIND Q883 "Tab_Example.Measure_Y"

14 SQL BIND Q884 "Tab_Example.Measure_Z"

. . .

20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM Tab_Example"

Пример: выбор строк с помощью функции WHERE

20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM Tab_Example WHERE Position_Nr<20"

Пример: выбор строк с помощью функции WHERE и Q-параметра

20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM Tab_Example WHERE Position_Nr==:’Q11’"

Пример: определение имени таблицы через абсолютный путь

20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM ’V:­\table­\Tab_Example’ WHERE Position_Nr<20"

0 BEGIN PGM SQL_CREATE_TAB MM

1 SQL Q10 "CREATE SYNONYM NEW FOR 'TNC:\table\NewTab.TAB'"

; Создание синонима

2 SQL Q10 "CREATE TABLE NEW AS SELECT X,Y,Z FROM 'TNC:\prototype_for_NewTab.tab'"

; Создание таблицы

3 END PGM SQL_CREATE_TAB MM

0 BEGIN PGM SQL_CREATE_TABLE_QS MM

1 DECLARE STRING QS1 = "CREATE TABLE "

2 DECLARE STRING QS2 = "'TNC:\nc_prog\demo\Doku\NewTab.t' "

3 DECLARE STRING QS3 = "AS SELECT "

4 DECLARE STRING QS4 = "DL,R,DR,L "

5 DECLARE STRING QS5 = "FROM "

6 DECLARE STRING QS6 = "'TNC:\table\tool.t'"

7 QS7 = QS1 || QS2 || QS3 || QS4 || QS5 || QS6

8 SQL Q1800 QS7

9 END PGM SQL_CREATE_TABLE_QS MM