Как сделать Oracle Query узнаваемым для табличного адаптера ASP.NET? - PullRequest
0 голосов
/ 10 июня 2009

У меня есть запрос с подзапросом в select, который должен получить значение из определенной таблицы, если она существует. Я не хочу вставлять запрос сюда по деловым причинам, но вот упрощенный пример того, что я пытаюсь сделать:

select a, b, (select x from z) as c  from table where ...

Запрос нормально выполняется в TOAD, но когда я прохожу мастер адаптера таблиц ASP.NET в моем объекте данных, он жалуется на выражение sql: «Ошибка в предложении SELECT NEAR ','». Я не уверен, что он все еще будет работать во время выполнения, даже если он жалуется? Я знаю, что предварительный просмотр не работает, и он не создал таблицу данных. Кто-нибудь испытывал это?

Причина, по которой я хочу сделать это таким образом, заключается в том, что запрос, заполняющий поле c, не всегда будет иметь значение, но я должен вернуть a и b, даже если c не имеет значения. Любой, кто хорошо знает SQL, может предложить обходной путь. Я хочу придерживаться 1 запроса таблицы адаптера, если это возможно.

Ответы [ 2 ]

2 голосов
/ 10 июня 2009

Когда инструмент не понимает запрос, один из методов, который всегда работает, - это создание представления, которое инкапсулирует ваш запрос.

CREATE VIEW v AS SELECT a, b, (select x from z) as c from table

Затем вы должны использовать простой запрос в ASP.NET, например:

SELECT a, b, c FROM v where...

Теперь представление содержит вашу бизнес-логику и будет храниться в вашем хранилище контроля версий вместе со всем вашим другим кодом.

2 голосов
/ 10 июня 2009

Наружное соединение с таблицей Z?

SELECT t.a,t.b,z.x
  FROM table t LEFT OUTER JOIN Z ON (t.y = Z.y)
 WHERE...

Это даст вам значения от Z, если они существуют, в противном случае NULL.

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