У меня были следующие проблемы для ответа @Lalit Kumars,
ORA-19202: Error occurred in XML processing
ORA-00904: "SUCCESS": invalid identifier
ORA-06512: at "SYS.DBMS_XMLGEN", line 288
ORA-06512: at line 1
19202. 00000 - "Error occurred in XML processing%s"
*Cause: An error occurred when processing the XML function
*Action: Check the given error message and fix the appropriate problem
Решение:
WITH char_cols AS
(SELECT /*+materialize */ table_name, column_name
FROM cols
WHERE data_type IN ('CHAR', 'VARCHAR2'))
SELECT DISTINCT SUBSTR (:val, 1, 11) "Searchword",
SUBSTR (table_name, 1, 14) "Table",
SUBSTR (column_name, 1, 14) "Column"
FROM char_cols,
TABLE (xmlsequence (dbms_xmlgen.getxmltype ('select "'
|| column_name
|| '" from "'
|| table_name
|| '" where upper("'
|| column_name
|| '") like upper(''%'
|| :val
|| '%'')' ).extract ('ROWSET/ROW/*') ) ) t
ORDER BY "Table"
/
При использовании autoconf можно использовать AC_C_BIGENDIAN
макрос, который, как справедливо гарантируют, будет работать (установка эти WORDS_BIGENDIAN
определяют по умолчанию)
поочередно, Вы могли попробовать что-то как следующее (взятый от autoconf) для получения теста, который будет, вероятно, оптимизирован далеко (GCC, по крайней мере, удаляет другое ответвление)
int is_big_endian()
{
union {
long int l;
char c[sizeof (long int)];
} u;
u.l = 1;
if (u.c[sizeof(long int)-1] == 1)
{
return 1;
}
else
return 0;
}
Нет никакого портативного способа сделать это во время компиляции, Ваш лучший выбор состоит в том, чтобы, вероятно, использовать Повышение макросы порядка байтов или эмулировать методы, которые они используют.
Хм, это - интересный Вопрос. Моя ставка - то, что это не возможно. Я думаю, что необходимо продолжить использовать макросы и пойти с BOOST_STATIC_ASSERT(!BIG_ENDIAN);
, или static_assert
в C++ 0x. Причина я думаю, что это вызвано тем, что endian'nes является свойством если Ваша среда выполнения. Однако static_assert рассматривают во время компиляции.
я предлагаю, чтобы Вы изучили код нового золото GNU компоновщик ELF. Ian Lance Taylor, его автор, использовал шаблоны, чтобы выбрать правильный порядок байтов во время компиляции, гарантировать оптимальную производительность во время выполнения. Он explicitely инстанцирует всех возможных порядков байтов, так, чтобы у него все еще была раздельная компиляция (не все шаблоны в заголовках) шаблонного определения и объявления. Его код превосходен.