Показать сообщение отдельно
Старый 22.03.2016, 02:49   #6  
kgksoft is offline
kgksoft
Участник
 
37 / 107 (4) +++++
Регистрация: 24.12.2003
Cделали себе метод в глобале. Тонны SQL через него преобразуются. У sqlLiteral ограничение кажется 128 символов.

X++:
static str any2sql(anytype _value)
{
    #define.LEN_FOR_SPLIT(100)

    SqlSystem sqlSystem = new SqlSystem();
    int i,nLen;
    str ret,curSubStr;

    if (typeOf(_value) == Types::String)
    {
        nLen = strLen(_value);
        if (nLen <= #LEN_FOR_SPLIT)
        {
            return sqlSystem.sqlLiteral(_value);
        }

        while (nLen)
        {
            curSubStr = subStr(_value, 1, #LEN_FOR_SPLIT);
            curSubStr = sqlSystem.sqlLiteral(curSubStr);
            if (ret)
            {
                ret = subStr(ret, 1, strLen(ret)-1) + subStr(curSubStr, 3, strLen(curSubStr)-2);
            }
            else
            {
                ret = curSubStr;
            }
            _value = subStr(_value, #LEN_FOR_SPLIT + 1, nLen);
            nLen = strLen(_value);
        }

        return ret;
    }

    return sqlSystem.sqlLiteral(_value);
}