November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Tuesday, October 4th, 2005 03:15 pm
Знаете, во что перевёл оракловый migration workbench вот эту фразу на T-SQL
DELETE FROM LevelMembers WHERE LevelID = @LevelID
?

Правильно, вот в эту:
DELETE FROM LevelMembers WHERE LevelID = LevelID

И она даже успешно скомпилировалась. Хорошо, что я пошел на нее глазами посмотреть, прежде чем запускать..
Tags:
Tuesday, October 4th, 2005 02:31 pm (UTC)
Мог бы MM не мучиться с переводом, а сразу drop table соорудить. Эффект не шибко хуже был бы.
Tuesday, October 4th, 2005 02:43 pm (UTC)
А вот и нет :) во-первых, после этой процедуры таблица точно останется жива, а во-вторых, если мне не изменяет мой склероз, то тут сработает не имя поля, а одноименная локальная переменная, которая инициализирована NULL'ом. А фраза WHERE NULL = NULL, кажется, возвращает FALSE.
Tuesday, October 4th, 2005 02:48 pm (UTC)
Останется жива только структура таблицы :)
Если там есть локальная переменная, объявленная с тем же именем, что и поле - да, есть вероятность, что всё обойдётся.
Но я бы побоялся проверять на себе :)
(Anonymous)
Tuesday, October 4th, 2005 02:55 pm (UTC)
Интересно, а во что он сконвертировал бы вот такой вариант:

DELETE FROM LevelMembers WHERE LevelMembers.LevelID = @LevelID

?
Tuesday, October 4th, 2005 02:57 pm (UTC)
Эт я забыл залогиниться :)
Tuesday, October 4th, 2005 03:12 pm (UTC)
Это вопрос. MW вообще довольно странно обращается с именами таблиц. Иногда явно подписывает к именам таблиц имя схемы, хотя она там всего одна - текущая, а иногда нет. Закономерность я уловить не смог.
К именам полей имена таблиц вроде как сам не подписывает, но если было, то, кажется, сохраняет. То есть, такое, скорее всего, сработало бы правильно.

Вообще-то, в умной книжке написано, что использовать локальные переменные, совпадающие с именами полей, вредно для душевного здоровья. Проблема в том, что оригинальную базу разрабатывал явно выраженный ненатурал, там встречаются имена полей (!) order и type. Ну и процедуры писал он же.
Wednesday, October 5th, 2005 05:02 am (UTC)
этот мигрейшен мог бы писать
DELETE FROM LevelMembers t WHERE t.LevelID = LevelID

а сравнение с Null дает в результате Unknown, что на практике в большинстве случаев можно считать и false..
Tuesday, October 10th, 2006 05:18 pm (UTC)
Саша, а у тебя, что нибудь с migration workbench получилось? Сейчас похожая задач стоит мигрировать базу MSSQL на Oracle, не подскажешь чем лучше воспользоваться. workbench пока получается как-то крив.
Tuesday, October 10th, 2006 05:31 pm (UTC)
Да, он перевел основную часть таблиц, а скрипты я потом вручную переводил, потому что автоматизированный перевод получился довольно крив. Но с учетом почти полного отсутствия у меня знаний об оракле, воркбенч был сильно полезен и сэкономил много времени.