Преобразование строки
Синтаксис
makestr(< строка >[, ... ])
< строка >
– выражение типа CHAR, VARCHAR.
Описание
< Строка >
может содержать знаки вопроса «?».
Возвращаемое значение
-
Строка, в которой вместо знаков вопроса подставлены значения параметров, преобразованные к строке. Соответствие знаков вопроса и параметров устанавливается по порядку.
-
Если необходимо включить в строку сам символ вопроса, он экранируется при помощи двойного или тройного обратного слеша (\\? или \\\?). Экранирование выполняется в 2 этапа:
а) удаление экранирующего символа:
-
любая строка в процедуре проверяется на наличие обратных слешей: в результате этой проверки производится преобразование;
-
строки вида "\?" в строку вида "?";
-
строки вида "\\?" в строку вида "\?";
-
строки вида "\\\?" в строку вида "\?";
-
строки вида "\\\\?" в строку вида "\\?" и т.д.
б) получившаяся строка проверяется на наличие "\?".
-
-
Если количество вопросов и актуальных выражений-параметров не совпадает, возвращается NULL.
Примеры
1) Функция удобна для формирования текста запроса, если использовать ее вместо конкатенации строк. Например, вместо: execute direct "insert into "+tabname+" values("+itoa(a*b)+",'"+charValue+"','"+dtoa(dateValue)+"');"; можно писать: execute direct makestr("insert into ? values(?, '?', '?');", tabname, a*b, charValue, dateValue); Такая конструкция читается лучше, не нужны вызовы функций преобразования типов (makestr их делает сама). В случае значения параметра NULL, makestr вставит текст «NULL». 2) Включение в таблицу tab_mkstr(i int, quest char(20)) строки с символом вопроса: execute direct makestr("insert into ? values(?, '\\?');", "tab_mkstr", 2); // execute direct makestr("insert into ? values(?, '\\\?');", "tab_mkstr", 3); // Результат: выполнения примера: I QUEST - ----- | 2|? | | 3|? |