Вопросы с тегами [oracle]

1

голосов
2

ответ
3.2k

Просмотры

PHP подключения Oracle и MySQL

Я пытаюсь получить некоторые данные из Oracle через ODBC к базе данных MySQL. А затем вставить несколько строк в базе данных MySQL. Мне удается перечислить строки из ORACLE, но не вставить в MYSQL. $ TIME_START = микропоры (истина); set_time_limit (10000); // Ligação ODBC ORACLE $ = odbc_connect подключения ( "тест", "тест", "тест"); $ Запроса = "выберите barcod, to_char (barfecgen, 'YYYY-MM-DD') в качестве данных, barnumuni, barcolnom, clicod из barcad, где barcodreo = 1"; $ Результат = odbc_exec ($ подключения, $ запроса); $ NumOF = 0; // Ligação MySql $ CON = mysql_connect ( "локальный", "корень", "интрасеть"); если (! $ CON) {умереть ( 'Erro де Ligação MySql:'. mysql_error ()); } Mysql_select_db ( "bd_test", $ CON); ?> <Таблица граница = "0" ALIGN = "Центр"
Carlos Martins
1

голосов
2

ответ
189

Просмотры

Умышленно Сделать базу данных для ошибок

Мне нужно знать, как сделать базу данных Oracle, чтобы без ошибок. Причина заключается в том, чтобы попытаться поймать исключение в JDBC. Звонки в базу данных вызываются с помощью веб-служб, которые в конечном итоге использовать JDBC вызовы к базе данных. Таким образом, потребители интерфейс ко всему этому через SOAP запросов. Большинство запросов принимает XSD: строку или / и XSD: дату. Один из способов, например, я делаю это, чтобы установить персонажу больше, чем 4000 символов в ИНЕКЕ для поля VARCHAR2 части (BYTE 4000). Существуют ли другие способы заставить базу данных, чтобы бросить ошибку?
Malvon
1

голосов
1

ответ
2.9k

Просмотры

Получение ошибки Oracle ORA-06572 при вызове функции с параметром из

Я много раз пытался позвонить ниже функции Oracle, которая имеет выходной параметр, и каждый раз, когда я получаю ошибку ORA-06572, могли бы вы предоставить мне лучший способ сделать это? ФУНКЦИЯ GET_NUMBER_TYPE (P_MSISDN в количестве, P_CONTRACT_TYPE OUT BCC_CONTRACTS.CONTRACT_TYPE% ТИП) ВОЗВРАТ BCC_CONTRACTS.CONTRACT_TYPE% ТИПА НАЧАТЬ ВЫБОР CON.CONTRACT_TYPE INTO P_CONTRACT_TYPE ОТ BCC_CONTRACTS CON, BCC_SUB_NUMBERS SUB ГДЕ CON.CONTRACT_NO = P_MSISDN И SUB.STATUS = 2; ИСКЛЮЧЕНИЕ КОГДА NO_DATA_FOUND ТОГДА DBMS_OUTPUT.PUT_LINE ( ​​«не найдены данные»); END GET_NUMBER_TYPE;
mustafa mohammed
1

голосов
4

ответ
56

Просмотры

Вы можете проверить, если столбец существует и выполнять различные действия с оракулом?

Моя таблица выглядит следующим образом: ID | value1 | подсчитывать У меня есть список значению1 в оперативной памяти, и я хочу сделать следующее: (если значение1 существует в таблице) {кол + 1} еще {вставить новую строку в таблицу} Возможно ли это с Oracle или я должен принять его код, сделать цикл и выполнить один из элементов списка в то время? Список содержит 5 миллионов значений. Я должен сделать что-то вроде этого в коде: для (INT I = 0; я
Andy
1

голосов
1

ответ
52

Просмотры

Объявление константы в PLSQL

У меня возникают проблемы, объявляя константу и использовать ее в простом запросе. Я пробовал много вариантов объявить константу в PLSQL, что я видел в Интернете, но я получаю ошибки. Что я делаю неправильно? ЗАЯВЛЯЕТ cobdate постоянного числа (10): = 420181109; НАЧАТЬ SELECT * FROM THIS_TABLE DEX ГДЕ dex.close_of_business_key = & cobdate И dex.scenario_type_id = 'хххх' И dex.s_counterparty_id = 'хххх' И dex.run_type = 'хххх' И dex.s_credit_line_type_id END = 'XXXX';
danny schult
1

голосов
2

ответ
67

Просмотры

SQL - ORA-00937: не функциональная группы одногрупповой

рассчитывать (случай, когда экстракт (год от match_date) = «2018», то один конец) Всего с match_results группы по местоположению, HOME_TEAM_NAME; Сообщение об ошибке: ORA-00937: не функциональная группа одной группы. В настоящее время работает это на оракул живого SQL. Любые идеи о том, как я могу решить эту проблему?
sammywemmy
1

голосов
2

ответ
46

Просмотры

с помощью: новые и старые: ссылающийся на различные таблицы в SQL

Пересмотр для универа экзамена. А вопрос гласит: Записать команду SQL, чтобы создать триггер в таблице разрешения. Триггер должен добавить один к numberOfPermissions в таблице файлов для файла, после того, как каждый раз, когда новое разрешение строка вводится в таблицу разрешения с именем этого файла. вот список таблиц при условии, что я получил все вниз, кроме одной линии, КУДА линии. Как бы я указать: новое значение в другую таблицу? Он должен прочитать новое значение в качестве столбца имени файла, поступающего из таблицы разрешений, но я не уверен, как это сделать. Я пробовал его способами, такие как: Permissions.new.fileName и т.д., но я всегда получаю неизвестную ошибку вокруг «» точка. CREATE TRIGGER newTrig ПОСЛЕ ВСТАВИТЬ о разрешении НАЧАТЬ Обновление файла SET numberOfPermissions = numberOfPermissions + 1, где File.name =: new.fileName END;
Armakar
1

голосов
2

ответ
32

Просмотры

Q: How to retrieve date with time(hours,minutes,seconds) from a 19 digit number in Oracle

Я хочу, чтобы получить дату и время из 19 цифр в Oracle и не могу найти решения для этого больших чисел. Время должно быть в формате HH24: MI: SS. Я могу получить дату, но не в состоянии получить время. ** Пример Число, чтобы получить дату и время: 1190205161950369000, 1190206092859146000, 1181230172734928000, 1181108121251823000 Для этого выше цифр, я добавил их значение сложения «19000000000000000000» и подстрока первые 8 цифр от общей стоимости, так что первые 8 цифр дать мне дата (ггггммдд). Для примера: SUBSTR (1190205161950369000 + 19000000000000000000,0,8) = 20190205 Следовательно, дата 05-02-2019 (ДД-ММ-ГГГГ). Но, чтобы получить время, даже если я увеличить длину подстроки от 8 до 14 или 18 до сих пор я получаю только дата и не время. SQL Query Использована Выберите to_date (SUBSTR (1190205161950369000 + 19000000000000000000,0,8), 'YYYYMMDD HH24: MI: SS'), как truedate от двойного; Результат: TRUEDATE --------- 05-02-2019 Я также попытался это, но не работает: Выберите to_date (SUBSTR (1190205161950369000 + 19000000000000000000,0,14), «YYYYMMDD HH24: MI: SS.SSSSS «), как truedate от двойного;
Dhanesh Agrawal
1

голосов
1

ответ
24

Просмотры

Oracle split repeating rows into columns when joining 2 tables

У меня 2 таблицы следующим образом: TABLE_A ID Col2 1 A 1 B 2 A 2 B 3 B TABLE_B ID col1 1 X 2 Y 3 ЗИ хотите присоединиться обе таблицы таким образом, чтобы полученный в результате содержит повторяющиеся значения строк в col2 из TABLE_A в виде столбцов , Каждый идентификатор не будет содержать более 3 table_a.col2 значения. В этом примере таблица результатов будет выглядеть следующим образом: результат: ID col1 col2 col3 цв-1 XAB нуль 2 YAB нуль 3 ZB Null Null Как я могу добиться этого? Я знаю, что могу использовать listagg (), чтобы объединить все строки в одну колонку, как это: выберите b.id, b.col1, listagg (a.col2, «_») в группе (заказ по a.col2), как col2 от TABLE_B б присоединиться к TABLE_A А на b.id = a.id группы по b.id, b.col1; Это дало бы мне результат: идентификатор col1 col2 1 X 2 Y a_b a_b 3 ZB
Anand Srinivasan
1

голосов
2

ответ
44

Просмотры

ORA-30089 when execute CREATE TABLE with a DATE type field

Я получаю следующее сообщение об ошибке при создании следующей таблицы: CREATE TABLE EVENTO (ID_EVENTO НОМЕР PRIMARY KEY, ID_COMPLEJO NUMBER NOT NULL, N_COMISARIOS НОМЕР, ДАТА FECHA_EVENTO, N_PARTICIPANTES НОМЕР, DURACION ИНТЕРВАЛ, Equipamiento VARCHAR2 (255), FOREIGN KEY (ID_COMPLEJO) СПИСОК ЛИТЕРАТУРЫ Complejo); Я не знаю, если это из-за разрешения компании Oracle для пользователя, потому что я нахожусь на рабочем столе и здесь он не позволяет мне создать таблицу. Ошибка дие empieza ан ла línea: 28 дель Comando: CREATE TABLE EVENTO (ID_EVENTO НОМЕР PRIMARY KEY, ID_COMPLEJO NUMBER NOT NULL, N_COMISARIOS НОМЕР, FECHA_EVENTO ДАТА, N_PARTICIPANTES НОМЕР, DURACION ИНТЕРВАЛ, Equipamiento VARCHAR2 (255), FOREIGN KEY (ID_COMPLEJO) Лит Complejo ) Informe де ошибка - ORA-30089: Falta о нет эс válido 30089. 00000 - «отсутствует или недействителен» * Причина: (год, месяц, день, час, минута, секунда), как ожидается, но не нашел, или указан в является более значительным, чем его. * Действие: Остальные таблицы я создаю их, но с DATE тип данных я не знаю, если я получаю это неправильно ...
Dani Vision
1

голосов
3

ответ
28

Просмотры

Как получить имя сотрудника, а запуск его зарплату?

создать или заменить триггер trg_t3 после вставки или обновления или удаления заработной платы на t2 для каждой строки начинаются, если to_char (systimestamp, «HH24») не между 9 и 17 затем вставить в значения t3 (: new.salary,: old.salary, SYSDATE ); еще DBMS_OUTPUT.PUT_LINE ( ​​«обновление не возможно с 9:00 до 17:00»); конец, если; конец; / Это будет вставить старую зарплату, новую зарплату и время на столе t3, основываясь на условиях, указанных в триггере на таблице t2. Но мне нужно имя сотрудника, чья зарплата обновляется или удалить. если я обновляя зарплату на t2 мне нужно вставить имя конкретного сотрудника, чья зарплата я модифицировал в t3. Но текущий метод будет только вставить старую зарплату, новую зарплату и время здесь код для создания таблицы создать таблицу t2 (имя VARCHAR (20), зарплату varchar2 (20)); создать таблицу t3 (salary_new VARCHAR2 (50), salary_old VARCHAR2 (20), log_date дату); вставить все в значения t2 ( 'хари', 2000) в t2 значений ( 'Sam', 40000) в значения t2 ( 'Ravi', 60000) в t2 значений ( 'Манодж', 8000) в t2 значений ( 'pratheep', 10000) в значения t2 ( 'Джон', 3000) в значения (t2 'Joe', 50000) в значения t2 ( 'SCOTT', 70000) выберите * от двойного;
leaner
1

голосов
2

ответ
48

Просмотры

Выдают каждый номер строки в месяц - Oracle SQL

У меня есть таблица вроде этого: Месяц | Дата ---------------------- мая 2019 | 03.05.19 мая 2019 | 04.05.19 мая 2019 | 07.05.19 июля 2019 | 03.07.19 июля 2019 | 05.07.19 июля 2019 | 06.07.19 июля 2019 | 08.07.19 И я хочу есть запрос, который выдает следующее. месяц | Дата | Ряд графа в месяц ---------------------- мая 2019 | 03.05.19 | 1 мая 2019 | 04.05.19 | 2 мая 2019 | 07.05.19 | 3 июля 2019 | 03.07.19 | 1 июля 2019 | 05.07.19 | 2 июля 2019 | 06.07.19 | 3 июля 2019 | 08.07.19 | 4 Так он выдает номер каждой строки в месяц, но я не знаю, как это сделать (у меня есть много более месяцев и даты, чем те). Я пытаюсь сделать это с row_number, но не могу показаться, чтобы получить это право. Какие-нибудь советы?
WaitForIt
1

голосов
4

ответ
57

Просмотры

Regexp или подстрока или другой метод, чтобы найти строку

Я хочу, чтобы достичь максимальной производительности и выберите "строку" только после слова "DL:" У меня есть столбец (VARCHAR2) со значениями: DL: 1011909825 Obj: 020190004387 DL: 8010406429 Obj: 020190004388 DL: 8010406428 DL: 190682 DL : PDL01900940 Obj: 020190004322 DL: 611913067 так выходной быть как: 1011909825 8010406429 8010406428 190682 PDL01900940 611913067 Я не эксперт в регулярных выражениях, но я попытался regexp_replace: rEGEXP_REPLACE (колонка 'Obj: | DL:', '', 1, 0, «я») это почти нормально, но выход все еще не то же самое: 1011909825 020190004387 8010406429 020190004388 8010406428 190682 PDL01900940 020190004322 611913067 Как я могу решить эту проблему и достичь максимальной производительности?
Georg
1

голосов
0

ответ
59

Просмотры

Не удается подключиться к серверу Oracle с моего компьютера, используя SSMA Microsoft для инструмента Oracle

Я пытаюсь подключиться к базе данных Oracle 9i из моей машины (Windows 7 x64) с помощью инструмента Microsoft, SSMA для Oracle v7.6.0, но получает следующее сообщение об ошибке: System.Data.OracleClient требует клиент Oracle версии программного обеспечения 8.1.7 или выше. Быстрый поиск в Интернете показывает, что это сообщение об ошибке довольно общее accross продуктов Microsoft, которые могут подключаться к базам данных Oracle. Я понятия не имею, какое программное обеспечение Oracle я должен установить и как настроить SSMA таким образом, чтобы иметь возможность использовать его. Как я могу решить эту проблему?
mounaim
1

голосов
0

ответ
930

Просмотры

Spring SimpleJdbcCall Oracle sql/pl - Unable to determine the correct call signature - multiple procedures/functions/signatures

I have a stored procedure in a package which has it defined with three different method signatures in the same package. They vary by only a few parameters (each calls the next with a few default values). I've over-simplified the list of columns for the sake of brevity here. I have about 55 fields in the procedure I'm calling. I am using the Spring class called "MapSqlParameterSource" to define the fields values I am providing: SqlParameterSource params = new MapSqlParameterSource() .addValue("pi_session_id", piSessionId) .addValue("pi_site_id", piSiteId) .addValue("pi_address_id", piAddressId) .addValue("po_status_cd", null) .addValue("po_status_mg", null); I'm using a simple jdbc call to define the stored procedure that I want to call: SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) .withSchemaName("myschema") .withCatalogName("address_package") .withProcedureName("p_post_address"); And then I execute the procedure with this call: Map resultsMap = jdbcCall.execute(params); And I typically log out the results for fun while I'm dev'ing these up. for (String key : resultsMap.keySet()) { logger.info("p_post_address - Key: " + key + " object: " + resultsMap.get(key)); } And then I access the output fields like this: String statusMessage = (String) resultsMap.get("po_status_mg"); BigDecimal statsCd = (BigDecimal) resultsMap.get("po_status_cd"); This works perfectly for Procedures that aren't overloaded! However, when I call this particular procedure, it gives me this error: org.springframework.dao.InvalidDataAccessApiUsageException: Unable to determine the correct call signature - multiple procedures/functions/signatures for 'P_POST_ADDRESS' Then I attempted to get tricky, and specify exactly which parameters should be used to call the stored procedure, so that it could match the overloaded method I wanted. SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) .withSchemaName("myschema") .withCatalogName("address_package") .withProcedureName("p_post_address"); jdbcCall.addDeclaredParameter(new SqlParameter("pi_session_id", OracleTypes.NUMBER)); jdbcCall.addDeclaredParameter(new SqlParameter("pi_site_id", OracleTypes.VARCHAR)); jdbcCall.addDeclaredParameter(new SqlParameter("pi_address_id", OracleTypes.NUMBER)); jdbcCall.addDeclaredParameter(new SqlOutParameter("po_status_cd", OracleTypes.NUMBER)); jdbcCall.addDeclaredParameter(new SqlOutParameter("po_status_mg", OracleTypes.VARCHAR)); This resulted in the same error. org.springframework.dao.InvalidDataAccessApiUsageException: Unable to determine the correct call signature - multiple procedures/functions/signatures for 'P_POST_ADDRESS' I eventually found out I need to add this option: jdbcCall.withoutProcedureColumnMetaDataAccess(); And that works! But I have no idea why. Could someone explain why you need to add the declared parameters addDeclaredParameter and also to call withoutProcedureColumnMetaDataAccess?
Josh Hull
1

голосов
0

ответ
164

Просмотры

Oracle Automated Статистика Коллекция не Анализ некоторых таблиц

Я включил автоматизированный сбор статистики в моей базе данных. выберите CLIENT_NAME, статус от dba_autotask_client, где статистика автооптимизатора коллекции "имя_клиента = статистика коллекции ВКЛЮЧЕНО автооптимизатора Но когда я опрашивать user_tables, я вижу лишь некоторые из таблиц анализируемыми.
oradbanj
1

голосов
1

ответ
299

Просмотры

Ошибка загрузчика Oracle Apex данных ORA-06512 - Нет загруженное содержимое находится в коллекции CLOB_CONTEXT

Я использую мастер Loader данных Apex в Apex 5.1.1.00.08 Я могу использовать функциональные возможности Загрузка файла для перехода к следующему шагу. Но когда я использую Copy / Paste функциональность я получаю ORA-01403: Данных не найдено, как показано ниже. is_internal_error: ложные ora_sqlcode: 100 ora_sqlerrm: ОРА-01403: нет данных не найдено component.type: APEX_APPLICATION_PAGE_PROCESS component.id: 27972280362924791 component.name: PARSE error_backtrace Загруженные данные: ORA-06512: на "APEX_050100.WWV_FLOW_DATA_UPLOAD", строка 693 ORA-06512 : в "APEX_050100.WWV_FLOW_PROCESS_NATIVE", строка 1003 ORA-06512: на "APEX_050100.WWV_FLOW_PROCESS_NATIVE", строка 1208 ORA-06512: на "APEX_050100.WWV_FLOW_PLUGIN", строка 2399 ORA-06512: на "APEX_050100.WWV_FLOW_PROCESS", строка 191 Apex журнал отладки: Apex Debug Примечание:
user7606897
1

голосов
2

ответ
90

Просмотры

Сокращение PARSE_CALLS с помощью Oracle ODP.NET (или повторного использования курсоров)

Когда я бегу запросов от ODP.NET я вижу в V $ SQL, что для каждого вызова он выполняет PARSE_CALL. См: выберите s.FETCHES, s.PARSE_CALLS, s.sql_Text, s.sql_id от V $ SQL с где sql_text = 'выберите 1 из двойной / * test2 * /' Возвращает: Даже если я повторно использовать тот же OracleCommand и называется Приготовьте. Вот мой код .NET: с помощью (Var с = connection.CreateCommand ()) {c.CommandText = "выберите 1 из двойной / * test2 * /"; c.Prepare (); для (INT I = 0; г <9000; я ++) {использованием (вар г = c.ExecuteReader ()) {r.Read (); }}} Как можно уменьшить количество Parse_Calls? Есть ли способ для меня, чтобы получить Oracle держать на стороне сервера курсор для всех этих повторных казней, и избавиться от него, когда я распоряжаюсь команду? Я использую Oracle.ManagedDataAccess.dll версию 4.122.1.20170624
Noam
1

голосов
3

ответ
98

Просмотры

Oracle SQL running total on change of field (SUM on column only when field changes)

У меня есть вопрос в отношении того, как SUM на колонке только тогда, когда поле меняется. Возьмем в качестве примера в приведенной ниже таблице: Обратите внимание, что колонки А и В являются колонки различные таблицы. Т.е. А был выбран из таблицы X и B выбран из таблицы Y SELECT, ХА, YB ИЗ X INNER JOIN Y = О X.DATE Y.DATE И X.VAL1 = Y.VAL1 И X.VAL2 = Y.VAL2 AB 123 5 123 5 456 10 789 15 789 15 мне нужно подвести столбца B на изменение поля на колонке А: Т.е. запрос должен возвращать 5 + 10 + 15 = 30 (5 в первый раз, так как значение в колонке А составляет 123, 10 второй время, потому что колонка а изменяется от 123 до 456 - обратите внимание, что вторая строка была пропущена из-колонка а еще содержит значение 123 - следовательно, изменение логики поля и так далее). Я не могу сделать простой SUM (B), так что бы вернуть 50. Я также не могу сделать SUM (B) по (PARTITION BY A), потому что это будет делать нарастающий итог группы, а не изменением поля. Мой выход должен выглядеть следующим образом: ABX 123 5 5 123 5 5 456 10 15 789 15 30 789 15 30 Я пытаюсь сделать это в простом запросе. Есть ли конкретная функция, которую я могу использовать, чтобы сделать это?
Help123
1

голосов
0

ответ
66

Просмотры

Есть ли триггер запуска до того динамического SQL (как выполнить немедленно или dbms_sql.execute)?

Я создаю функцию, чтобы позволить пользователю создавать proceduce, функции, пакет и запустить они с некоторыми разрешениями (грант по этой программе, а не разрешение базы данных) сохранить в виде таблицы. Я хочу, чтобы создать триггер запуска перед любым динамическим SQL и анализировать ее, чтобы предотвратить опасные заявления SQL от плохих пользователей? Как следующий + ------------ + | ПРОГРАММА | ------------------------------ + ------------ + | | | v | + ------------ + ------------ + --------------- + | USER» S SQL | | РАЗРЕШЕНИЕ | | СЕССИЯ INFO | + ------------ + ------------ + --------------- + | ___________________ | ________________ | v + ----------------- + | TRIGGER | ------------- + ----------------- + | | Разрешить | Не допускать стихи + ----------------------- + + ------------- + | EXECUTE IMMEDIATE | | ОШИБКА | + ----------------------- + + ------------- + Могу ли я создать Anythings, как это?
Martin Leung
1

голосов
0

ответ
47

Просмотры

План выполнения Oracle отличается при использовании раздела расширенного синтаксиса

Я запрашивая в Oracle 12c большого subpartitioned таблицу, которая имеет статистику по таблице и разделы уровня, но ничего не собрались на уровне подраздела. Я заметно отличается объяснить результаты плана для другого синтаксиса раздела, предположительно потому, что один из них опирается на несуществующие статистики подразделу ...? И я подтвердил gather_plan_statistics / dbms_xplan.display_cursor, что фактическое исполнение соответствует планам, и с тех пор один из этих планов используют хэш-соединение и другие вложенные циклы, я вижу измеримо различную производительность по этим запросам. (Это не только эта конкретная таблица производства, либо. Я могу воспроизвести разницу плана с тестовым списком диапазоном subpartitioned таблицы, тестом-проиндексирована таблицами поиска, несколько записей, и «глобальное и перегородочные» DBMS_STATS. ) Query 1 с расширенным синтаксисом разделов: выберите отчетливый lkt.txt_other из subpart_test раздела (P_2) SPT левое соединение lookup_test LKT на spt.num_other = lkt.num_other где spt.dt_subkey> to_date ( '20140101', 'YYYYMMDD') Это дает мне план выполнения с мощностью 1 для моей subpartitioned таблицы; предположительно из-за того, что она использует вложенный цикл. Против производственной таблицу раздела с фактическим счетчиком строк из 55M, это в среднем чуть менее 6 минут для запуска. -------------------------------------------------- -------------------------------------------------- ------------------- | Id | Операция | Имя | Ряды | Б | Стоимость (% CPU) | Время | Pstart | Pstop | -------------------------------------------------- -------------------------------------------------- ------------------- | 0 | ВЫБРАТЬ ЗАЯВЛЕНИЕ | | 1 | 17 | 10 (10) | 00:00:01 | | | | 1 | HASH UNIQUE | | 1 | 17 | 10 (10) | 00:00:01 | | | | 2 | Вложенные петли OUTER | | 1 | 17 | 9 (0) | 00:00:01 | | | | 3 | PARTITION СПИСОК SINGLE | | 1 | 11 | 8 (0) | 00:00: 01 | 2 | 2 | | 4 | PARTITION RANGE итератор | | 1 | 11 | 8 (0) | 00:00:01 | 3 | 6 | | * 5 | Таблица ACCESS ПОЛНЫЙ | SUBPART_TEST | 1 | 11 | 8 (0) | 00:00:01 | 7 | 12 | | 6 | Таблица ДОСТУП INDEX ROWID порционный | LOOKUP_TEST | 2 | 12 | 1 (0) | 00:00:01 | | | | * 7 | INDEX RANGE SCAN | I_LOOKUP_TEST | 2 | | 0 (0) | 00:00:01 | | | -------------------------------------------------- -------------------------------------------------- ------------------- Query 2 с ключом секционирования в ИНЕКЕ: выберите отчетливый lkt.txt_other из subpart_test SPT покинул присоединиться lookup_test LKT на spt.num_other = lkt.num_other где spt.dt_subkey> to_date ( '20140101', 'YYYYMMDD' ) И spt.num_key = 2 Это дает мне план выполнения с точными оценками количества строк; это приводит к хешированию. На той же производственной таблице, это средние чуть менее 4 минут, чтобы бежать. (Является ли это 2 минуты улучшение или улучшение на 33%? Только тестирование против одного из больших разделов будет сказать наверняка, и это, очевидно, займет больше времени, чтобы делать.) Это также план выполнения, я получаю для запроса 1, если я произвожу статистика для подразделов на моей тестовой таблице (я не могу попробовать это в производстве), но не тогда, когда я включаю ключ раздела в ИНЕКЕ для спецификации раздела двойного удара: только имея раздел () синтаксис без этого подраздела статистики столовых с оценка кардинальной независимо от того, что еще я могу сделать. -------------------------------------------------- -------------------------------------------------- -------- | Id | Операция | Имя | Ряды | Б | Стоимость (% CPU) | Время | Pstart | Pstop | -------------------------------------------------- -------------------------------------------------- -------- | 0 | ВЫБРАТЬ ЗАЯВЛЕНИЕ | | 8 | 160 | 13 (8) | 00:00:01 | | | | 1 | HASH UNIQUE | | 8 | 160 | 13 (8) | 00:00:01 | | | | * 2 | HASH JOIN OUTER | | 17 | 340 | 12 (0) | 00:00:01 | | | | 3 | PARTITION СПИСОК SINGLE | | 10 | 140 | 8 (0) | 00:00:01 | 2 | 2 | | 4 | PARTITION RANGE итератор | | 10 | 140 | 8 (0) | 00:00: 01 | 3 | 6 | | * 5 | Таблица ACCESS ПОЛНЫЙ | SUBPART_TEST | 10 | 140 | 8 (0) | 00:00:01 | 7 | 12 | | 6 | Таблица ACCESS ПОЛНЫЙ | LOOKUP_TEST | 30 | 180 | 4 (0) | 00:00:01 | | | -------------------------------------------------- -------------------------------------------------- -------- Кто-нибудь знает, что происходит и как я могу лучше всего работать на настройке производительности по таблицам без каких-либо статистических данных по их подразделам? Это не только этот один стол; У меня есть много таблиц, как это работать с по той же схеме «опрашивать один раздел и в том, что в пределах нескольких подразделов, присоединяясь к некоторым другим таблицам». На данный момент я имею в виду смешанную стратегии «спросить мой DBA, что случилось со статистикой подраздела» и "
Caitlin M. Shaw
1

голосов
1

ответ
60

Просмотры

Как добавить часть XML в XML-файл во время выполнения?

У меня есть следующий XML. Я пытаюсь обновить / добавить часть XML во время выполнения. но его довольно трудно. JARVIZ ОРАНЖЕВЫЙ ЦВЕТ LIGHT_RED ВЕС 1KG это ожидание! JARVIZ ОРАНЖЕВЫЙ ЦВЕТ LIGHT_RED ВЕС 1KG MADE Флорида Веди меня, как обращаться с Append в XML во время выполнения?
Azhagiri S
1

голосов
0

ответ
66

Просмотры

How to insert XML into Oracle database?

I'm trying to insert XML into Oracle database same as it appears in the saved RandomQuestions.xml file, I'm not getting any error as such but this is how it appears in database, I have QUESTIONS data type as VARCHAR2(4000 BYTE); if I use ByteArrayOutputStream, In database it appears like this:- [email protected] without use of ByteArrayOutputStream:- [email protected] RandomQuestions.xml looks like this:- My Code:- @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { some code here .... try { DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); // root elements Document doc = db.newDocument(); some code here ... StringBuffer retXML = new StringBuffer(""); if (add != null) { InputSource is = new InputSource(); genMaths gm = new genMaths(); retXML.append(gm.additionQ(leve, 2, numOfQuesAdd, 1)); } retXML.append(""); InputSource is = new InputSource(); is.setCharacterStream(new StringReader(retXML.toString())); doc = db.parse(is); DOMSource source1 = new DOMSource(doc); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File("C:\\Users\\XXXX\\Documents\\XML Files\\RandomQuestions.xml")); transformer.transform(source, result); /************** Adding questions to database **************/ ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); TransformerFactory.newInstance().newTransformer().transform(source, result); ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); try { dbConn = new DbConnection(); conn = DbConnection.connection(); CallableStatement proc = null; proc = conn.prepareCall("{call pa_customer_admin.pr_create_question(?,?,?,?,?,?,?,?)}"); proc.setInt(1, Integer.parseInt(assId)); proc.setString(2, qusTypeCode); proc.setString(3, inputStream.toString()); proc.setString(4, mark); proc.setString(5, timeLimit); proc.setString(6, cdocId); proc.registerOutParameter(7, OracleTypes.INTEGER); proc.registerOutParameter(8, OracleTypes.VARCHAR); proc.execute(); String errorMessage = proc.getString(8); if (errorMessage == null) { System.out.println("No Error"); quesId = proc.getString(7); } else { System.out.println(" Error : " + errorMessage); } proc.close(); conn.close(); } catch (SQLException e) { out.println("SQLException caught: " + e.getMessage()); System.out.println("SQLException caught: " + e.getMessage() + "error Code : " + e.getErrorCode()); } catch (NumberFormatException | ServletException | IOException e) { System.out.println("File saved!"); } catch (ParserConfigurationException pce) { } catch (SAXException | TransformerException ex) { Logger.getLogger(XmlServlet.class.getName()).log(Level.SEVERE, null, ex); } }
Tony
1

голосов
0

ответ
425

Просмотры

How to Login the PL/SQL Developer UI via CommandLine with params?

I'm going to develop a program, in which I want to login the PL/SQL Developer UI via CommandLine with params. I have tried many times but I can't get the result. So I come here to get some helps. It cannot fill in the login form correctly when I use the command blew(in CMD): "C:\Program Files (x86)\PLSQL Developer\plsqldev.exe" userid=root/[email protected]:1521/test all the commands are filled in the 'Username' blank, the 'Password' and 'Database' blanks are empty. Also, before the Oracle Logon appear, it says these: I search the Internet but I can't find it. Would you tell me how to achieve it, I express my appreciation of your help. ps, the version information below:
X.Ming
1

голосов
0

ответ
826

Просмотры

Ошибка Spring загрузки / Oracle / Java: Не удалось получить результаты JDBC Connection в Тайм-аут соединения

Система Я работаю с имеет следующее (я использую Spring бутсу) Я получаю сообщение об ошибке при запуске приложения, используя следующие: Вызванные: org.springframework.jdbc.CannotGetJdbcConnectionException: `Не удалось получить JDBC Connection`; вложенное исключение java.sql.SQLRecoverableException: IO Error: `Сетевой адаптер не может установить connection` на org.springframework.jdbc.datasource.DataSourceUtils.getConnection (DataSourceUtils.java:80) ~ [весна-4.3.9 JDBC .RELEASE.jar: 4.3.9.RELEASE] на org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData (JdbcUtils.java:326) ~ [весенне-JDBC-4.3.9.RELEASE.jar: 4.3.9.RELEASE] ... 61 общие рамки опущены из-за этого, я получаю java.net.ConnectException: Тайм-аут соединения: подключение Ниже другая информация. Почему я получаю эту ошибку? Код видит соединение. URL - но - он говорит, что он не может работать с ним. Насколько я могу сказать, что синтаксис является правильным. Как я могу это исправить? ТИА pom.xml файл XSI: SchemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 ccinrest BackEndRestFunctionality 0.0.1-SNAPSHOT баночка SpringBootErrorHandlingDemoy http://maven.apache.org UTF-8 org.springframework.boot весна-загрузка-стартер-родитель 1.5.4.RELEASE maven.oracle.com истинную ложную https: // Maven .oracle.com по умолчанию maven.oracle.com https://maven.oracle.com орг. шоу-SQL = истина # Hibernate DDL авто (создание, создание дропа, обновление): с «созданием дропа» базы данных # схема будет автоматически создается заново для каждого запуска приложение spring.jpa.hibernate.ddl-авто = создать -drop # стратегия Нейминг spring.jpa.hibernate.naming.implicit-стратегия = org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl spring.jpa.hibernate.naming.physical-стратегия = org.springframework.boot.orm.jpa. hibernate.SpringPhysicalNamingStrategy # Позволяет Hibernate генерировать SQL, оптимизированный для конкретной СУБД spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.Oracle10gDialect #hibernate конфигурации spring.jpa.database-платформа = org.hibernate.dialect.Oracle10gDialect ошибок Журнал . ____ _ __ _ _ / \\ / ___'_ __ _ _ (_) _ __ __ _ \ \ \ \ (() \ ___ | «_ | '_ | |' _ \ / _` | \ \ \ \ \\ / ___) | | _) | | | | | || (_ | |)))) | ____ | .__ | _ | | _ | _ | | _ \ __, | / / / / ========= | _ | ============== | ___ / = / _ / _ / _ / :: Spring Загрузочный :: (v1. 5.4.RELEASE) 2018-01-24 19: 25: 06,507 ИНФО 12076 --- [Основной] ccinrest.App: Запуск приложения на рабочем столе-8EFRPQF с PID 12076 (C: \ РАБОТА \ Test \ SpringBootErrorHandlingDemo \ \ целевые классы, созданные dgmufasa в C: \ РАБОТА \ Test \ SpringBootErrorHandlingDemo) 2018-01-24 19: 25: 06,511 ИНФО 12076 --- [Основные] ccinrest.App: нет активный набор профиля, отступая к профилям по умолчанию: по умолчанию не 2018-01-24 19: 25: 06,629 ИНФО 12076 --- [Основной] ationConfigEmbeddedWebApplicationContext: Освежающие org.springframework.boot[email protected]64d7f7e0: запуск дата [ср 24 января 19:25:06 CST 2018]; корень контекста иерархии 2018-01-24 19: 25: 09,949 ИНФО 12076 --- [Основной] sbcetTomcatEmbeddedServletContainer: Tomcat инициализирован с портом (ы): 8080 (HTTP) 2018-01-24 19: 25: 09,968 INFO 12076 - - [главная] o.apache.catalina.core.StandardService: Запуск службы [Tomcat] 2018-01-24 19: 25: 09,973 INFO 12076 --- [главная] org.apache.catalina.core.StandardEngine: Запуск двигателя Servlet : Apache Tomcat / 8.5.15 2018-01-24 19: 25: 10,183 ИНФО 12076 --- [ост-стартстопный-1] oaccC [Tomcat] [локальный] [/]:.. Инициализация Спринг встроенных WebApplicationContext 2018-01- 24 19: 25: 10,183 ИНФО 12076 --- [ост-стартстопный-1] osweb.context.ContextLoader: Корень WebApplicationContext: инициализация завершена в 3559 мс 2018-01-24 19:25:10. ServletRegistrationBean: Отображение сервлет: 'DispatcherServlet' на [/] 2018-01-24 19: 25: 33,725 ОШИБКИ 12076 --- [главный] oatomcat.jdbc.pool.ConnectionPool: Невозможно создать начальные соединения пула. java.sql.SQLRecoverableException: IO Error: Сетевой адаптер не может установить соединение на oracle.jdbc.driver.T4CConnection.logon (T4CConnection.java:774) ~ [ojdbc8-12.2.0.1.jar: 12.2.0.1.0] на oracle.jdbc.driver.PhysicalConnection.connect (PhysicalConnection.java:688) ~ [ojdbc8-12.2.0.1.jar: 12.2.0.1.0] на oracle.jdbc.driver.T4CDriverExtension.getConnection (T4CDriverExtension.java:39) ~ [ojdbc8-12.2.0.1.jar: 12.2.0.1.0] на oracle.jdbc.driver.OracleDriver.connect (OracleDriver.java:691) ~ [ojdbc8-12.2.0.1.jar: 12.2.0.1.0] на org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver (PooledConnection.
Casey Harrils
1

голосов
1

ответ
37

Просмотры

SQL скрипт, как я могу выполнить следующий сценарий?

Я должен выполнить этот сценарий. Проблема в том, что в SQL Developer я наклоняю запустить его, так как некоторые операторы не признаются. P_jobgroup_id: ОСНОВНОЙ нагрузки 'GDWH2MYGDWH-GDWH2MYGDWH' закончил 'GDWH2MYGDWH-GDWH2MYGDWH_IF' 'ЕСЛИ закончил GDWH2MYGDWH-GDWH2MYGDWH_INIT' ЕСЛИ или ОСНОВНОЙ начала объявить p_context_code varchar2 (100): = 'GDWH2MYGDWH'; v_res varchar2 (100); начинают v_res: = OJC.jc_master.main (p_batch_number => NULL, то p_jobgroup_id => 'GDWH2MYGDWH-GDWH2MYGDWH'), p_parameters_string => 'GDWH2MYGDWH.PRM_REPORTING_DATE =' || ТО_СНАК (SYSDATE, 'yyyymmddhh24miss', p_context_code => p_context_code); конец; / Ошибка при запуске в строке 1 в команде: P_jobgroup_id: Сообщение об ошибке: Unknown Command Ошибка при запуске в строке 2 в команде: CORE нагрузка закончил отчет 'GDWH2MYGDWH-GDWH2MYGDWH' Error: Unknown Command ORA-06550: строка 8, столбец 50: PLS-00103: Обнаружен символ "" когда ожидается одно из следующих действий: , (*% & = - +; </> у в это мод остальное не бэр
eda
1

голосов
0

ответ
59

Просмотры

Что является лучшим способом для индексирования несколько внешних ключей?

Изучение основ Oracle, я узнал, что внешние ключи должны быть проиндексированы, благодаря этому вопросу. Однако, если у меня есть таблица с несколькими внешними ключами, я должен создать 1 индекс для каждого внешнего ключа или 1 индекс для всей таблицы? Например, у меня есть таблицу А (а, б, в, г), В и С быть внешними ключами на таблицах В и С. является лучшим решением: CREATE INDEX index_tab НА (B, C); Или я должен идти с: CREATE INDEX index_A_1 ON A (б); CREATE INDEX index_A_2 ON A (C);
TartineThomas
1

голосов
2

ответ
273

Просмотры

Возможная утечка памяти в библиотеке Oracle.ManagedDataAccess

Я начал писать программу, которая копирует данные из базы данных Oracle для базы данных SQL Server и сразу же побежали в проблему памяти. Я использую библиотеку Oracle.ManagedDataAccess (NuGet установить команду: «установка-пакет Oracle.ManagedDataAccess»). Библиотека версия 4.122.1.0 Вот моя функция: частный статическая сила LoadTable (TableToLoad таблица) {DataTable loadBuffer = NULL; // предполагает, что источник оракул сейчас. Предположим, пункт назначения SQL Server, используя (OracleConnection сопп = новый OracleConnection (table.SourceConnectionString)) {OracleDataReader читатель = OracleCommands.GetDataReader (string.Format ( "выберите * из \" {0} \ "\ "{1} \"" , table.SourceSchema, table.SourceTable), Conn); BOOL foundData = reader.Read (); если (loadBuffer == NULL) {loadBuffer = InitializeBuffer (считыватель); } Int RecordsAffected; в то время как (foundData == TRUE) {объект [] currentRowValues ​​= новый объект [reader.FieldCount]; INT valueCount = reader.GetValues ​​(currentRowValues); loadBuffer.Rows.Add (currentRowValues); если (loadBuffer.Rows.Count> = 15000) {SqlCommands.RunSqlCommandWithDataTableInput (String.Format ( "вставить в {0}. {1} выберите * от @loadBufferTable", table.TargetSchema, table.TargetTable), table.TargetConnectionString, из RecordsAffected, loadBuffer, "loadBufferTable"); loadBuffer.Dispose (); loadBuffer = NULL; loadBuffer = InitializeBuffer (считыватель); } FoundData = reader.Read (); } Если (loadBuffer.Rows.Count> 0) {SqlCommands.RunSqlCommandWithDataTableInput (String.Format ( "вставить в {0}. {1} выберите * от @loadBufferTable", table.TargetSchema, table.TargetTable), table.TargetConnectionString, из RecordsAffected, loadBuffer, "loadBufferTable"); loadBuffer.Dispose (); loadBuffer = NULL; } Reader.Close (); reader.Dispose (); Считыватель = NULL; }} Когда я запускаю это потребление памяти просто взмывает вверх, и через несколько минут я получить из ошибки памяти. Я остановил процесс и использовать диагностические инструменты, чтобы посмотреть на то, что использует так много памяти. Почти вся память была взята с десятками тысяч объектов «OraBuf», которые создаются с помощью метода DataReader.Read. Я попытался deallocating и воссоздания DataTable объекта Я использую в качестве буфера для вставки партии, думая, что, может быть, как-то DataTable держит на ссылки на объекты OraBuf, но это не исправить эту проблему (я изначально был использованием DataTable.Clear ( ) метод, чтобы сбросить DataTable). Почему это происходит (и что я могу сделать, чтобы исправить это)? Спасибо за помощь. EDIT: Моя тестовая таблица в Oracle имеет столбец CLOB в нем. Проблема, кажется, связано с чтением, что значение CLOB, как проблема не проявляется при использовании других таблиц (без OutOfMemoryException). Есть ли лучшая библиотека для доступа к Oracle, что я должен использовать? EDIT 2: Я хотел бы также отметить, что в таблице я тестирую с (один с колонки CLOB) имеет около 2,9 миллионов записей, и это, как правило, не удается где-то между рядами 500000 и строк 1500000 (фактическое наименьшую количество строк, прежде чем из отказа памяти было около 649000 и самая высокая была около 1390000). EDIT 3: Я попытался спаривание вниз этот код, чтобы помочь определить проблему и одну линию, которая делает разницу является: INT valueCount = reader.GetValues ​​(currentRowValues); Я также попробовал версию, где я только читал один столбец в то время и в том случае, чтение значения с помощью индекса приводит к возникновению проблемы (только на колонке CLOB). Вот строка в альтернативном варианте, что приводит к за исключением: NewRow [ColumnIndex] = читатель [ColumnIndex];
David
1

голосов
0

ответ
57

Просмотры

Log4Net регистрации неправильное сообщение

Я развертывается Log4Net на 2 разных серверах. на 1, показывающий ее надлежащее сообщение, как: [ОШИБКА] [2018-01-25 19: 17: 00856] [MANSOUR3185] [GicCipDataObjects.Oracle] [GetAllRequest] - БД System.Data.OracleClient.OracleException Ошибка (0x80131938): ORA- 01722: неправильный номер, но на 2-ом сервере он не регистрирует соответствующее сообщение: [ERROR] [2018-01-25 19: 17: 00856] [MANSOUR3185] [GicCipDataObjects.Oracle] [GetAllRequest] - DB System.Data.OracleClient Error. OracleException (0x80131938): ORA-01722: ÑÞã УИН ÕÇáÍ Я выделил обоих. конфигурация же на обоих серверах. Нужна помощь.
Waqas
1

голосов
2

ответ
964

Просмотры

Granting privileges to user on AWS RDS Insance

Я в настоящее время импорт файла дампа внутри экземпляра Oracle RDS 12С, используя impdp команду. До этого требуется создать несколько пользователей и предоставить им необходимые права. Я следующие утверждения, которые я использую на других не Rds баз данных. ГРАНТ НЕОГРАНИЧЕННЫЕ табличный «USERNAME» ГРАНТ «РЕСУРС» ​​К «USERNAME» ГРАНТ «CONNECT» TO «USERNAME» ГРАНТ «EXECUTE_CATALOG_ROLE» К «USERNAME» Когда я запускаю их до импорта, эти команды возвращают грант удался. Теперь, когда я бегу impdp, я получаю следующие ошибки в журнале: Обработка Тип объекта SCHEMA_EXPORT / SYSTEM_GRANT ORA-31685: Тип объекта SYSTEM_GRANT: «USRNAME» не удалось из-за недостатка прав. В противном случае это SQL: GRANT НЕОГРАНИЧЕННЫХ табличный "USERNAME" ORA-39083: Тип объекта ROLE_GRANT не удалось создать с ошибкой: ORA-01924: роль «CONNECT» не предоставляется или не существует В противном случае SQL является: GRANT «CONNECT» TO «USERNAME» То же самое для других привилегий, а также. Я бег этих команд с помощью администратора пользователя, который был создан во время раскручивания экземпляра. Я видел, что есть другой способ предоставления в AWS RDS по этой ссылке Как сопоставить это с того, что я пытаюсь достичь здесь?
Ajinkya Bapat
1

голосов
1

ответ
259

Просмотры

Удалить данные, возвращаемые из подзапроса в оракула

У меня есть две таблицы. если данные в table1 больше, чем заранее определенный предел (скажем, 2), мне нужно скопировать оставшиеся содержимое table1 в table2 и удалять те же содержимое из table1. Я использовал ниже запрос для вставки избыточных данных из таблица1 в table2. вставить в table2 SELECT * FROM table1 WHERE ROWNUM <((выберите отсчет (*) от table1) -2); Теперь мне нужен запрос на удалении, чтобы удалить вышеупомянутое содержимое из table1. Заранее спасибо.
Neel
1

голосов
0

ответ
67

Просмотры

Hibernate найти по идентификатору медленнее, чем найти все

Итак, для начала, я работаю над приложением, с угловым передним концом, Java 8 промежуточного слоя и Oracle 12c задней части. Пользовательский интерфейс передает запрос на Java с помощью промежуточного программного обеспечения, промежуточного программного обеспечения REST оракула доступа через Hibernate. В моем приложении, у меня есть тип А лицо, которое имеет множество связей с другими сущностями. Я столкнулся с проблемой, когда делать Субъект менеджер .find для объекта А через его ID, запросы для некоторых из этих лиц принимают свыше 15 секунд. Кажется, специфичным для типа А когда субъект имеет отношение к определенному типу B сущности, и я попытался лениво и охотно выборка безрезультатно. Проблема сохраняется независимо от того, как он взял, и я вошел время вниз через все слои приложения, и замедляются именно, когда находят по идентификатору делается на уровне фасада. Тем не менее, если я находка всего запрос всех объектов типа А, то запрос завершается в течение разумного периода времени для числа лиц, в настоящее время в базе данных (то есть намного меньше, чем 15 секунд). Я попытался найти для подобных случаев и чтение документации, но я не могу найти вескую причину, почему это происходит. Надеясь кто-то с большим опытом гибернации, чем сам столкнулся с подобным вопросом, и может мне точку в правильном направлении. Будем рады более подробно остановиться в случае необходимости, но не совсем уверен, что происходит под капотом спящего режима, что бы объяснить такое поведение. Спасибо. [править] Спасибо за ответы, и приносим извинения за расплывчатость. Есть много вещей, которые повлияли на мою способность быть более тщательным, или получить точные заявления SQL, и т.д. Для тех, кто может найти это в далеком будущем,
Vizioso
1

голосов
0

ответ
51

Просмотры

Session inside datatable in c#.net

В приведенном ниже коде, сессия [ "FirstName"] = SCode.ToString (); оказываете ошибка (имя сеанс не существует в текущем контексте) .thanks общественного DataTable Searchup (строка SiteCode = "", строка EmployeeRole = "") {DbConnection соппы = _dataFactory.CreateConnection (); DbDataAdapter да = _dataFactory.CreateDataAdapter (); DataTable дт = NULL; попробуйте {conn.ConnectionString = _connectionString; conn.Open (); da.SelectCommand = conn.CreateCommand (); da.SelectCommand.CommandType = CommandType.Text; DbParameter пары = NULL; Строка SQL = "SELECT ID, SiteCode, EMPLOYEEROLE, EmployeeID, ОТ" + _tblnpf + "пользователя, где Empl 'Администратор'"; если {SQL + = "И SiteCode = @SiteCode" (String.IsNullOrEmpty (SiteCode.Trim ())!); OracleHelper.CreateParameter (ссылка да, ссылка пары, "@SiteCode", DbType.String, ParameterDirection.Input, SiteCode); Секция [ "FirstName"] = SCode.ToString (); } Da.SelectCommand.CommandText = OracleHelper.FixCommandText (SQL); DataTable DT1 = новый DataTable ( "Пользователь"); da.Fill (DT1); Секция [ "FirstName"] = SCode.ToString (); } Da.SelectCommand.CommandText = OracleHelper.FixCommandText (SQL); DataTable DT1 = новый DataTable ( "Пользователь"); da.Fill (DT1); Секция [ "FirstName"] = SCode.ToString (); } Da.SelectCommand.CommandText = OracleHelper.FixCommandText (SQL); DataTable DT1 = новый DataTable ( "Пользователь"); da.Fill (DT1);
user9303941
1

голосов
0

ответ
49

Просмотры

Выберите вставку, используя вид, очень медленно внутри пакета

У меня выбор-вставки оператора, который использует представление, когда запустить его внутри окна SQL в PL / SQL Developer, выполняется в течение 17 секунд, однако, когда я запускаю его в пакете, он ultrapasses 10 минут. Я пытался заменить параметр в выражении WHERE (p_id_arquivo) для ряда буквального, чтобы увидеть, если он работает быстрее из-за план выполнения, но ничего не изменилось. Может вы, ребята, помочь? Если вам нужно что-нибудь еще, пожалуйста, сообщите мне. Спасибо. Следит код: / * Вставка выполняется в SQL Windows - Работает в 17 секунд - Стоимость 6 пояснениями окно * / вставить в GT_ARQ_CONTA_TIM_3 (ID_ARQUIVO, ID_LAYOUT, NOME_ARQUIVO, DT_IMPORTACAO, DT_INTEGRACAO, STATUS_ARQUIVO, ID_ARQUIVO_LINHAS, TIPO_REGISTRO, CONTROLE_SEQ, DATA_VENCIMENTO, DATA_EMISSAO НРК, CNL_RECURSO, DDD, DEGRAU_LIGACAO, SINAL_VLR_LIGACAO, ALIQUOTA_ICMS, VLR_LIGACAO_IMP, CLASSE_SERVICO, ФИЛЛЕР от vw_arq_conta_tim_3 V, где v.ID_ARQUIVO = девятьсот девяносто две тысячи триста шестьдесят две); Внутри Packge: / * Выбор вставки внутри пакета, P_ID_ARQUIVO является параметром процедуры программ пакета, его номер * / НАЧАТЬ вставки в GT_ARQ_CONTA_TIM_3 (ID_ARQUIVO, ID_LAYOUT, NOME_ARQUIVO, DT_IMPORTACAO, DT_INTEGRACAO, STATUS_ARQUIVO, ID_ARQUIVO_LINHAS, TIPO_REGISTRO, CONTROLE_SEQ, DATA_VENCIMENTO, DATA_EMISSAO НРК, CNL_RECURSO, DDD, NUM_TELEFONE, CARACT_RECURSO, DEGRAU_RECURSO, DATA_LIGACAO, CNL_LOCALIDADE, NOME_LOCALIDADE, UF_TELEFONE, CLASSE_SERVICO, ФИЛЛЕР из vw_arq_conta_tim_3 V, где v.ID_ARQUIVO = p_id_arquivo); ---- Teste - плоско-де-execução ИСКЛЮЧЕНИЕ КОГДА ДРУГИЕ ПОСЛЕ ЭТОГО raise_application_error (-20100, 'Erro ао inserir на GT_ARQ_CONTA_TIM_3! || SQLERRM); КОНЕЦ; Вид vw_arq_conta_tim_3: CREATE OR REPLACE VIEW VW_ARQ_CONTA_TIM_3 AS SELECT A.ID_ARQUIVO, A.ID_LAYOUT, A.NOME_ARQUIVO, A.DT_IMPORTACAO, A.DT_INTEGRACAO, A.STATUS_ARQUIVO, B.ID_ARQUIVO_LINHAS, FU_ARQ_BUSCA_VALOR_COLUNA (A.ID_LAYOUT, B.ID_LAYOUT_LINHAS,» TIPO_REGISTRO», B.VALOR) TIPO_REGISTRO, FU_ARQ_BUSCA_VALOR_COLUNA (A.ID_LAYOUT, B.ID_LAYOUT_LINHAS, 'CONTROLE_SEQ', В. ID_LAYOUT_LINHAS И A.ID_LAYOUT = 194 И B.ID_LAYOUT_LINHAS = 2478 ORDER BY A.ID_ARQUIVO, B.ID_ARQUIVO_LINHAS; SQL для gt_arq_conta_tim_3: - Создание таблицы создать глобальную временную таблицу GT_ARQ_CONTA_TIM_3 (ID_ARQUIVO NUMBER (20) не равно нулю, ID_LAYOUT NUMBER (20) не нулевой, NOME_ARQUIVO VARCHAR2 (100) не равно нулю, DT_IMPORTACAO DATE NOT NULL, DT_INTEGRACAO ДАТА, STATUS_ARQUIVO VARCHAR2 (1), ID_ARQUIVO_LINHAS НОМЕР (20) не равно нулю, TIPO_REGISTRO VARCHAR2 (4000), CONTROLE_SEQ VARCHAR2 (4000), DATA_VENCIMENTO VARCHAR2 (4000), DATA_EMISSAO VARCHAR2 (4000), СРН VARCHAR2 (4000), CATEGORIA VARCHAR2 (4000), DESCRICAO_CATEGORIA VARCHAR2 (4000), HORARIO_LIGACAO VARCHAR2 (4000), TIPO_DE_CHAMADA VARCHAR2 (4000), GRUPO_HORARIO_TARIFARIO VARCHAR2 (4000), DESC_HORARIO_TARIFARIO VARCHAR2 (4000), DEGRAU_LIGACAO VARCHAR2 (4000), SINAL_VLR_LIGACAO VARCHAR2 (4000), ALIQUOTA_ICMS VARCHAR2 (4000), VLR_LIGACAO_IMP VARCHAR2 (4000), CLASSE_SERVICO VARCHAR2 (4000), ФИЛЛЕР VARCHAR2 (4000)) на совершающих удаление строк; - Грант / Отозвать привилегии объекта гранта выбирать, вставлять, обновлять, удалять, изменять на GT_ARQ_CONTA_TIM_3 в Жерал; TIPO_DE_CHAMADA VARCHAR2 (4000), GRUPO_HORARIO_TARIFARIO VARCHAR2 (4000), DESC_HORARIO_TARIFARIO VARCHAR2 (4000), DEGRAU_LIGACAO VARCHAR2 (4000), SINAL_VLR_LIGACAO VARCHAR2 (4000), ALIQUOTA_ICMS VARCHAR2 (4000), VLR_LIGACAO_IMP VARCHAR2 (4000), CLASSE_SERVICO VARCHAR2 (4000), ФИЛЛЕР VARCHAR2 (4000)) на совершающих удаление строк; - Грант / Отозвать привилегии объекта гранта выбирать, вставлять, обновлять, удалять, изменять на GT_ARQ_CONTA_TIM_3 в Жерал; TIPO_DE_CHAMADA VARCHAR2 (4000), GRUPO_HORARIO_TARIFARIO VARCHAR2 (4000), DESC_HORARIO_TARIFARIO VARCHAR2 (4000), DEGRAU_LIGACAO VARCHAR2 (4000), SINAL_VLR_LIGACAO VARCHAR2 (4000), ALIQUOTA_ICMS VARCHAR2 (4000), VLR_LIGACAO_IMP VARCHAR2 (4000), CLASSE_SERVICO VARCHAR2 (4000), ФИЛЛЕР VARCHAR2 (4000)) на совершающих удаление строк; - Грант / Отозвать привилегии объекта гранта выбирать, вставлять, обновлять, удалять, изменять на GT_ARQ_CONTA_TIM_3 в Жерал; ALIQUOTA_ICMS VARCHAR2 (4000), VLR_LIGACAO_IMP VARCHAR2 (4000), CLASSE_SERVICO VARCHAR2 (4000), ФИЛЛЕР VARCHAR2 (4000)) на совершающих удаление строк; - Грант / Отозвать привилегии объекта гранта выбирать, вставлять, обновлять, удалять, изменять на GT_ARQ_CONTA_TIM_3 в Жерал; ALIQUOTA_ICMS VARCHAR2 (4000), VLR_LIGACAO_IMP VARCHAR2 (4000), CLASSE_SERVICO VARCHAR2 (4000), ФИЛЛЕР VARCHAR2 (4000)) на совершающих удаление строк; - Грант / Отозвать привилегии объекта гранта выбирать, вставлять, обновлять, удалять, изменять на GT_ARQ_CONTA_TIM_3 в Жерал;
Felipe Morales
1

голосов
0

ответ
28

Просмотры

Определить соединение SQLDeveloper когда пароль не требуется для базы данных

Есть ли способ, чтобы определить соединение в SQLDeveloper, когда пароль не требуется для базы данных? Спасибо
jlp
1

голосов
1

ответ
95

Просмотры

Как SAS подключиться к оракулу, даже если имя хоста не указано

В примере, как же SAS подключиться к оракулу без оракула имени хоста и порта? Имя_библиотеки mydblib оракул пользователь = TestUser пароль = testpass путь = hrdept_002; http://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a003113591.htm У меня есть опыт работы с SAS подключения к другим базам данных, и я всегда нужно поставить хост и порт
Victor
1

голосов
0

ответ
310

Просмотры

ORA-00932: несовместимые типы данных: ожидается NCHAR получил NCLOB

Oracle.ManagedDataAccess.EntityFramework 6 библиотеки используются для доступа к базе данных Oracle из приложения WebAPI MVC ASP.Net. Это самая последняя версия библиотеки из NuGet по состоянию на 14 ноября 2017 года общественного IEnumerable GetGis (строка ID) {вар model3 = blnobat.Select (). OrderBy (р => p.A_NOBAT) .гд (р => p.A_COUNTERNO . .Value.ToString () Содержит (идентификатор)); Возвращение (model3) .ToString (); } Тип A_COUNTERNO в базе данных number.when я запустить программу, Visual Studio показать эту ошибку: ORA-00932: несовместимые типы данных: ожидается NCHAR получил NCLOB спасибо,
aria
1

голосов
1

ответ
342

Просмотры

Как создать оракул последовательность заселить Таблица размеров основаны от другой таблицы

EDIT: Я пересмотрел свой первоначальный вопрос для ясности. Надеюсь, что это помогает объяснить, что я пытаюсь более четко выполнять. У меня есть стандартная SQL таблица АВТОМОБИЛЬ, и я изменил свое название на OLTP_VEHICLES переименованы заявлением. Я создал новую таблицу транспортных средств в виде таблицы измерения, которая является «началом» моей звездообразной схемы для этой БД. Теперь нужно выполнить следующее: «Для столбца первичного ключа vehicleCode, используйте последовательность Oracle для заполнения значений для столбца vehicleDescription используйте каскадную комбинацию vehicleMake и vehicleModel из таблицы OLTP_VEHICLES.» Мне нужно для достижения этой цели с помощью / SQL блока PL для заполнения столбца описания путем выбора vehicleMake и vehicleModel из таблицы OLTP_VEHICLES, а затем вставить сцепленную комбинацию в таблицу Dimension ТРАНСПОРТНЫХ СРЕДСТВ, с помощью курсора в цикле. С помощью этой инструкции, я совершенно сбит с толку. Я думаю, где я путаю вас прекрасные людьми, прежде чем был тот факт, что я выходил из «второй части» с участием вставки конкатенации vehicleMake и vehicleModel. Значит ли это поможет лучше объяснить, что я после? Если нет, то я глубоко сожалею. Я так растерялся на это, что я даже не имея проблем с его описанием. еще раз спасибо за вашу помощь. CREATE TABLE АВТОМОБИЛЯ (vehicleVIN VARCHAR (25) PRIMARY KEY, vehicleType VARCHAR (10) NOT NULL ПРОВЕРКА (нижний (vehicleType) IN ( 'компактного', 'среднего размера', 'Полный экран', 'джип', 'грузовик')), vehicleMake VARCHAR (15) NOT NULL, vehicleModel VARCHAR (15) NOT NULL, vehicleWhereFrom VARCHAR (20) NOT NULL, ПРОВЕРКА (нижняя (vehicleWhereFrom) IN ( 'Мэриленде',» вирджиния»," Вашингтон, округ Колумбия)), vehicleWholesaleCost DECIMAL (9,2) NOT NULL, vehicleTradeID INT); INSERT INTO ТРАНСПОРТНЫХ СРЕДСТВ (vehicleVIN, vehicleType, vehicleMake, vehicleModel, vehicleWhereFrom, vehicleWholesaleCost, vehicleTradeID) значения ( '147258HHE91K3RT', 'компактный', 'Шевроле', 'искры', 'Мэриленд', 20583,00, NULL); INSERT INTO ТРАНСПОРТНЫХ СРЕДСТВ (vehicleVIN, vehicleType, vehicleMake, vehicleModel, vehicleWhereFrom, vehicleWholesaleCost, vehicleTradeID) значения ( '789456ERT0923RFB6', 'Midsize', 'Форд', 'Телец', 'Вашингтон, округ Колумбия', 25897.22,1); INSERT INTO ТРАНСПОРТНЫХ СРЕДСТВ (vehicleVIN, vehicleType, vehicleMake, vehicleModel, vehicleWhereFrom, vehicleWholesaleCost, vehicleTradeID) VALUES ( '1234567890QWERTYUIOP', 'полноразмерная', 'Линкольн', 'Towncar', 'Вирджиния', 44222,10, NULL); INSERT INTO ТРАНСПОРТНЫХ СРЕДСТВ (vehicleVIN, vehicleType, vehicleMake, vehicleModel, vehicleWhereFrom, vehicleWholesaleCost, vehicleTradeID) VALUES ( 'WER234109TEO458GZ', 'внедорожник', 'Шевроле', 'пригородной', 'Мэриленд', 52789.00,2); Alter Table ТРАНСПОРТНЫХ СРЕДСТВ Присвоить OLTP_VEHICLES; CREATE TABLE ТРАНСПОРТНЫХ СРЕДСТВ (vehicleCode УАКСНАК (25) ПЕРВИЧНЫЙ КЛЮЧ, vehicleDescription VARCHAR (50) NOT NULL); Я также поставить это в SQL Fiddle если кто-то хочет испытать что-то: http://sqlfiddle.com/#!4/2de3ae спасибо! CREATE TABLE ТРАНСПОРТНЫХ СРЕДСТВ (vehicleCode УАКСНАК (25) ПЕРВИЧНЫЙ КЛЮЧ, vehicleDescription VARCHAR (50) NOT NULL); Я также поставить это в SQL Fiddle если кто-то хочет испытать что-то: http://sqlfiddle.com/#!4/2de3ae спасибо! CREATE TABLE ТРАНСПОРТНЫХ СРЕДСТВ (vehicleCode УАКСНАК (25) ПЕРВИЧНЫЙ КЛЮЧ, vehicleDescription VARCHAR (50) NOT NULL); Я также поставить это в SQL Fiddle если кто-то хочет испытать что-то: http://sqlfiddle.com/#!4/2de3ae спасибо!
StevenC
1

голосов
2

ответ
63

Просмотры

ActiveRecord :: StatementInvalid в UsersController # шоу

Это невозможно перейти по этому адресу: 127.0.0.1/users/sign_up. Когда я иду на страницу, я получаю следующее сообщение об ошибке: OCIError: ORA-01722: неправильный номер: SELECT * FROM (SELECT "BLACKROW" "V_B_USERS" * FROM "BLACKROW" "V_B_USERS" WHERE (USER_ID = «sign_up... «) ORDER BY "BLACKROW". "V_L_USERS". "USER_ID" АСК) где ROWNUM
Chips
1

голосов
1

ответ
370

Просмотры

ОР-06502: PL / SQL: числовая или значение ошибка в оракула хранимой процедуры

Вот моя процедура, в которой я фильтрации базы данных по 4 параметрам: дата начала, дата окончания, час и минуту. Когда я фильтровать данные между ними, чтобы 2017-11-01 до 2017-11-30 (С в течение месяца) его работает нормально, но когда я фильтрация данных больше, чем на 1 месяц, как 2017-11-01 до 2017-12-10 затем его подачи меня ошибка, как указано ниже. Процедура создания или замены ПРОЦЕДУРА RentedTotalCars (STARTDATE IN VARCHAR2, ENDDATE IN VARCHAR2, control_time_hour IN VARCHAR2, control_time_min IN VARCHAR2, p_refcur OUT SYS_REFCURSOR) IS dateDiffernce INT; v_no INT; l_query CLOB; startDateInTimestamp TIMESTAMP; endDateInTimestamp TIMESTAMP; startDateInDate ДАТА; endDateInDate ДАТА; startDateText VARCHAR2 (1200); endDateText VARCHAR2 (1200); addedDate ДАТА; addedTimestamp TIMESTAMP; НАЧАТЬ v_no: = 0; startDateText: = STARTDATE || «» || control_time_hour || ':' || control_time_min || ': 00'; endDateText: = ENDDATE || '' || control_time_hour || ':' || control_time_min || ': 00'; startDateInTimestamp: = TO_TIMESTAMP (startDateText, 'гггг-мм-дд HH24: MI: SS'); endDateInTimestamp: = TO_TIMESTAMP (endDateText, 'гггг-мм-дд HH24: MI: SS'); startDateInDate: = TO_DATE (StartDate, 'ГГГГ-ММ-ДД'); endDateInDate: = TO_DATE (EndDate, 'ГГГГ-ММ-ДД'); dateDiffernce: = endDateInDate - startDateInDate + 1; l_query: = 'Select date1, Codice, CODICE_NAZIONALE, сумма (RentedCars), как RentedCars, сумма (TotalCars) в качестве TotalCars из (', в то время dateDiffernce> 0 цикл addedDate: = startDateInDate + v_no; addedTimestamp: = startDateInTimestamp + v_no; l_query: = l_query || '(Выберите q2.date1, q2.CODICE, q2.CODICE_NAZIONALE, граф (q2.id), как RentedCars, 0, как TotalCars от '; l_query: = l_query || '(Выберите ''' || addedDate || ''», как date1, m.ID_VEICOLO как идентификатор, m.ID_SEDE_USCITA, pv.ID_GRUPPO, s.CODICE, g.CODICE_NAZIONALE от '; l_query: = l_query ||' (SELECT id_veicolo, ID_SEDE_USCITA из movimenti_auto где '; l_query: = l_query ||' Inizio = '' '|| addedTimestamp || ''') т '; l_query: = l_query ||' левый присоединиться к parco_veicoli ру на m.id_veicolo = ру. идентификатор '; l_query: = l_query ||' левый присоединиться GRUPPI г на pv.ID_GRUPPO = g.id '; l_query: = l_query ||' левый присоединиться Sedi с на m.ID_SEDE_USCITA = s.id '; l_query: = l_query | | 'где pv.IMPEGNATO = 1) q2'; l_query: = l_query || 'Группа по CODICE_NAZIONALE, Codice, date1)'; l_query: = L_query || «Объединение всех»; l_query: = l_query || '(Выберите ''' || addedDate || ''», как date1, s.CODICE, g.CODICE_NAZIONALE, 0, как RentedCars, граф (pv.id) TotalCars от Parco_veicoli ру '; l_query: = l_query ||' левый присоединиться GRUPPI г на pv.id_gruppo = g.id '; l_query: = l_query ||' влево присоединиться к Sedi с на pv.id_sede = s.id где '; l_query: = l_query ||' (data_acq < ''»|| addedDate || '' ') и'; l_query: = l_query || '((data_scadenza_contratto> ''' || addedDate || '' 'или data_proroga_1> ''' || addedDate || '' ''; l_query: = l_query || 'или data_proroga_2> ''' || addedDate || '' ')'; l_query: = l_query || 'или data_vend> ''' || addedDate || '' ')'; l_query: = l_query || 'Группа по s.CODICE, g.CODICE_NAZIONALE)'; если dateDiffernce> 1, то l_query: = l_query || «Объединение всех»; конец, если; v_no: = v_no + 1; dateDiffernce: = dateDiffernce-1; конец цикла; l_query: = l_query || ') Q1'; l_query: = l_query || 'Группа по Codice, Codice_nazionale, date1'; l_query: = l_query || 'Упорядочить по date1, Codice, Codice_nazionale'; ОТКРЫТЫЙ p_refcur ДЛЯ l_query; КОНЕЦ; Ошибка ORA-06502: PL / SQL: числовые или значение ошибки ORA-06512: на "MYRENT.RENTEDTOTALCARS", строка 58 ORA-06512: в строке 13 Моя линия в процедуре нет 58 нет: l_query: = l_query || '(Data_acq < ''' || addedDate || '' ') и'; CODICE_NAZIONALE) '; если dateDiffernce> 1, то l_query: = l_query || «Объединение всех»; конец, если; v_no: = v_no + 1; dateDiffernce: = dateDiffernce-1; конец цикла; l_query: = l_query || ') Q1'; l_query: = l_query || 'Группа по Codice, Codice_nazionale, date1'; l_query: = l_query || 'Упорядочить по date1, Codice, Codice_nazionale'; ОТКРЫТЫЙ p_refcur ДЛЯ l_query; КОНЕЦ; Ошибка ORA-06502: PL / SQL: числовые или значение ошибки ORA-06512: на "MYRENT.RENTEDTOTALCARS", строка 58 ORA-06512: в строке 13 Моя линия в процедуре нет 58 нет: l_query: = l_query || '(Data_acq < ''' || addedDate || '' ') и'; CODICE_NAZIONALE) '; если dateDiffernce> 1, то l_query: = l_query || «Объединение всех»; конец, если; v_no: = v_no + 1; dateDiffernce: = dateDiffernce-1; конец цикла; l_query: = l_query || ') Q1'; l_query: = l_query || 'Группа по Codice, Codice_nazionale, date1'; l_query: = l_query || 'Упорядочить по date1, Codice, Codice_nazionale'; ОТКРЫТЫЙ p_refcur ДЛЯ l_query; КОНЕЦ; Ошибка ORA-06502: PL / SQL: числовые или значение ошибки ORA-06512: на "MYRENT.RENTEDTOTALCARS", строка 58 ORA-06512: в строке 13 Моя линия в процедуре нет 58 нет: l_query: = l_query || '(Data_acq < ''' || addedDate || '' ') и'; конец цикла; l_query: = l_query || ') Q1'; l_query: = l_query || 'Группа по Codice, Codice_nazionale, date1'; l_query: = l_query || 'Упорядочить по date1, Codice, Codice_nazionale'; ОТКРЫТЫЙ p_refcur ДЛЯ l_query; КОНЕЦ; Ошибка ORA-06502: PL / SQL: числовые или значение ошибки ORA-06512: на "MYRENT.RENTEDTOTALCARS", строка 58 ORA-06512: в строке 13 Моя линия в процедуре нет 58 нет: l_query: = l_query || '(Data_acq < ''' || addedDate || '' ') и'; конец цикла; l_query: = l_query || ') Q1'; l_query: = l_query || 'Группа по Codice, Codice_nazionale, date1'; l_query: = l_query || 'Упорядочить по date1, Codice, Codice_nazionale'; ОТКРЫТЫЙ p_refcur ДЛЯ l_query; КОНЕЦ; Ошибка ORA-06502: PL / SQL: числовые или значение ошибки ORA-06512: на "MYRENT.RENTEDTOTALCARS", строка 58 ORA-06512: в строке 13 Моя линия в процедуре нет 58 нет: l_query: = l_query || '(Data_acq < ''' || addedDate || '' ') и'; строка 58 ORA-06512: в строке 13 My Line нет 58 в процедуры: l_query: = l_query || '(Data_acq < ''' || addedDate || '' ') и'; строка 58 ORA-06512: в строке 13 My Line нет 58 в процедуры: l_query: = l_query || '(Data_acq < ''' || addedDate || '' ') и';

Просмотр дополнительных вопросов