2014-02-07 2 views
3

Согласно CF9 cfquery documentation, я должен иметь возможность вернуть ROWID оракула в результате выполнения cfquery.coldfusion cfquery возвращаемый вставленный oracle rowid

Я не смог по всем пунктам, он просто не возвращает идентификатор или сгенерированные ключи

Я использую JDBC оракула тонкий клиент, может кто-нибудь мне точку в правильном направлении здесь?

+0

Если вы используете последовательность для генерации вашего ключа, сначала выберите nextval, установите его в переменную, а затем используйте переменную в своем запросе на вставку. –

+0

Я, кажется, помню, что либо 'IDENTITYCOL', либо' GENERATED_KEY' были фактически возвращены всеми db, даже если документы говорят иначе. Возможно, я ошибаюсь, но стоит попробовать? – Abram

+0

@DanBracuk не в этом случае, таблица не имеет уникального идентификатора, отличного от rowid, без последовательности –

ответ

8

Если вы использовали один из драйверов Oracle, который поставляется с ColdFusion, то вы должны иметь доступ к GENERATEDKEY из структуры RESULT в объекте запроса ColdFusion. Поскольку вы используете драйвер тонкого клиента JDBC Oracle, где вы настраиваете источник данных, используя «Добавить новый источник данных»> «Другое», затем введите конфигурацию JDBC, у вас нет доступа к структуре RESULT, описанной в документации.

Я столкнулся с той же проблемой, когда мы использовали драйвер MS JDBC с CF8. После преобразования в CF9 со встроенным драйвером SQL мы смогли обновить наш код, чтобы правильно ссылаться на структуру RESULT.

Вам нужно будет написать свои инструкции INSERT, чтобы также выбрать значение ROWID, которое вы должны получить из конечного объекта запроса.

+0

Thnaks для этого ответа ... в качестве примечания, я обновил драйвер для оракула от использования тонкого клиента jdbc, и теперь он возвращается –

Смежные вопросы