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
Friday, September 30th, 2005 11:49 am
Под катом приводится кусочек [не работающего из-за перекрытия имён] кода на оракловом PL/SQL, автоматически сгенерированного оракловым же Migration workbench'ем из микрософтовского T-SQL.
Задача: попробуйте осознать, что за фигня здесь написана, и восстановить исходный код :).

StoO_selcnt := 0;
SELECT 1 INTO StoO_selcnt
FROM DUAL
WHERE  ( 'Location' = ( 
			SELECT  type_ 
				 FROM SomeTable  
				WHERE id = ID 		 ));
END;
IF StoO_selcnt != 0 THEN
BEGIN
	FullPath := FullPath || separator;
END;
END IF;
Friday, September 30th, 2005 11:29 am (UTC)
ну и работу ты себе нашел :)
Friday, September 30th, 2005 11:34 am (UTC)
У меня-то задача была другая - перетащить код из MSSQL в оракл. Но этот migration workbench там такого наворотил, что теперь приходится сличать две версии и руками исправлять :)
Friday, September 30th, 2005 11:50 am (UTC)
select from dual where? Да они там молодцы :)))

Это функция, которая строит полный путь по вложенным категориям, да?
Friday, September 30th, 2005 12:09 pm (UTC)
Это в смысле "Да вы тут ВСЕ МОЛОДЦЫ!" ? Ну да, есть такое :)
Не угадал, оно ещё проще..
Friday, September 30th, 2005 12:13 pm (UTC)
..which reminds me. Славная шутка над ораклистами - втихаря сказать delete from dual :))
или insert into dual values('y')
Friday, September 30th, 2005 12:19 pm (UTC)
Злой ты..

А оригнал выглядел так:
if ( (select type_ from SomeTable where id = @ID) = 'Location')
Begin
  SET  @FullPath =  @FullPath + @separator
end

В смысле, если запись имеет тип 'Location', то подписать в конце маршрута разделитель. Всё.

Я долго фтыкал, чтО это за код, пока не посмотрел в оригинал.
Friday, September 30th, 2005 01:45 pm (UTC)
Ну, что посадили, то и выросло.

Код на транзакте явно писан бывшим (а то и нынешним) сишником. Ибо мышление - его не спрячешь. Условие по-хорошему должно быть написано так:



Ну а машинный перевод еще долго будет оставлять желать лучшего, и это еще мягко выражаясь...