Имя, уже используемое существующим объектом в VBA - PullRequest
0 голосов
/ 10 марта 2011

В VBA я пытаюсь использовать объект OraDynaSet для создания временной таблицы и извлечения некоторых данных в нее, прежде чем использовать ее для другого выбора.

strSQL = "create table user1.new12 as(" _
    & "Select lca.coupon_upc,lca.division from  lca where lca.campaign_id = " & campaign_id & "" _
    & "MINUS " _
    & " Select mcr.coupon_upc,mcr.division from  mcr where mcr.campaign_id = " & campaign_id & ")"
    Set OraDynaSet = objdatabase.DBCreateDynaset(strSQL, o&)

Я установил соединение с пользователем user1выполнить несколько запросов на выборку перед выполнением этого DDL.Теперь, когда я выполняю код VBA, он выдает ошибку «ORA: 009955 Имя используется существующим объектом».Куда я иду не так?

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Таблица уже существует. Вы создаете не временную таблицу, а стандартную таблицу: она останется в базе данных после завершения сценария. Если вы уже запустили этот сценарий и не удалили таблицу, произойдет следующее выполнение.

В Oracle Глобальная временная таблица - это постоянные объекты, содержащие временные данные. В большинстве случаев, если вам нужно регулярно использовать временную таблицу (потому что она является частью повторяющегося процесса), вы можете создать таблицу только один раз.

0 голосов
/ 11 марта 2011

Если вы используете эту временную таблицу только для одного последующего запроса, тогда может быть проще использовать «встроенное представление»:

select t.coupon_upc, t.division from
   (select lca.coupon_upc,lca.division from  lca where lca.campaign_id = campaign_id
     MINUS 
    select mcr.coupon_upc,mcr.division from  mcr where mcr.campaign_id = campaign_id) t
 where {clauses here...}

Tim

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...