Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Вниз

Использование пакетов в Оракле   Найти похожие ветки 

 
Danilka ©   (2006-10-25 14:08) [40]


> А где хранить запросы к вьюхам?

я иногда храню, таки, в ресурсах :))
правда, не Дельфи, а c#.
просто не люблю многострочные строковые константы, загромождают код, неудобно.
А вот-так удобно:
string selectInvoiceSQL = res.GetString("selectInvoiceSQL");
OleDbCommand cmd = new OleDbCommand(selectInvoiceSQL, con);


 
Polevi ©   (2006-10-25 14:11) [41]

>Danilka ©   (25.10.06 14:08) [40]
я можно так OleDbCommand cmd = new OleDbCommand("EXEC SelectInvoiceSQL", con);
в том и прелесть, само название процедуры говорит о многом


 
Игорь Шевченко ©   (2006-10-25 14:11) [42]

Danilka ©   (25.10.06 14:05) [38]


> Во вьюхах :))
> Мое мнение, что для большинства случаев запросы, в которых
> происходят соединения таблиц, а не просто однотабличные
> выборки, следует обрамлять вьюхами, а на клиенте уже селект
> из этих въюх.


Вьюхи - еще большее зло, чем хранимые процедуры.


 
Polevi ©   (2006-10-25 14:12) [43]

смелое утверждение


 
Polevi ©   (2006-10-25 14:12) [44]

особенно если учесть что иногда без никак


 
Danilka ©   (2006-10-25 14:16) [45]

[39] Reindeer Moss Eater ©   (25.10.06 14:05)
держать сложные запросы во въюхах удобно еще и тем, что, когда на реальных данных запрос получается слишком тормозной, его оптимизация никак не затронет клиентов, все делаешь на сервере.
Вобщем, для исправления ошибок проектирования, можно так сказать. :))

[41] Polevi ©   (25.10.06 14:11)
Можно. Но страшно. У меня фобия на это и на "select *", вобщем на те случаи, когда явно не перечислены поля. :))

[42] Игорь Шевченко ©   (25.10.06 14:11)
> Вьюхи - еще большее зло, чем хранимые процедуры.

Даже и незнаю что сказать. Либо LMD, либо байку про овощ в свое время. %))


 
Игорь Шевченко ©   (2006-10-25 14:17) [46]

Danilka ©   (25.10.06 14:16) [45]

Я смайлик буду ставить в нужном месте. Тут есть соседняя ветка про то, что ХП являются чем-то лишним вроде пятого колеса в телеге.


 
Danilka ©   (2006-10-25 14:20) [47]

[46] Игорь Шевченко ©   (25.10.06 14:17)
Ага, вижу :))


 
Сатир   (2006-10-25 14:46) [48]


> неопределенное число параметров переавать одним хмл параметром

вот на этом и остановились.
Но возникла следующая проблемма: курсоры можно открывать только с заранее известным и постоянным числом параметров.
К тому же, получается для каждого датасета, нужно добавлять свой генератор xml-я, что не очень удобно.
Как альтернатива xml, передавать строку типа "параметр=значение;..."
и парсить её на входе хранимой процедуры, но опять возникает проблемма с открытием курсора, нужно постоянное заранее известное количество связанных переменных.


 
Reindeer Moss Eater ©   (2006-10-25 15:07) [49]

К тому же, получается для каждого датасета, нужно добавлять свой генератор xml-я, что не очень удобно.

Такие мелочи и так сильно пугают?

но опять возникает проблемма с открытием курсора, нужно постоянное заранее известное количество связанных переменных.

А ты не используй параметры вообще. Ага.
Формируй текст курсора как строку. Ага.
И открывай реф курсор.
Немного возни, зато все будет "крута".

Можно будет переименовывать таблицы и схемы хоть по сто пять раз на день.
Мегасистема.


 
Курдль ©   (2006-10-25 15:09) [50]


> Игорь Шевченко ©   (25.10.06 13:27) [28]
> А зачем их менять ? Другая СУБД, я надеюсь, SQL тоже поддерживает
> ?


Ага! У одной запрос
"... T1 left outer join (T2, T3) on T2.T3_ID = T3.T3_ID and T2.T1_ID = T1.T1_ID"
а у другой:
"... T1 left outer join (T2 inner join T3 on T2.T3_ID = T3.T3_ID) on T2.T1_ID = T1.T1_ID"

> Если тебя не затруднит, приведи пожалйуста пример приложения,
>  которое можно перенести на другую СУБД одним лишь изменением
> в ресурсах текстов запросов.

Да, легко. И не только "которое можно", а "которые перенесены". Пиши мне на мыло.


 
ANB ©   (2006-10-25 15:10) [51]


> курсоры можно открывать только с заранее известным и постоянным
> числом параметров.

кто сказал такую глупость ? Почитай про биндовые переменные и их использование в динамическом SQL.


 
Reindeer Moss Eater ©   (2006-10-25 15:14) [52]

Ага! У одной запрос
"... T1 left outer join (T2, T3) on T2.T3_ID = T3.T3_ID and T2.T1_ID = T1.T1_ID"
а у другой:
"... T1 left outer join (T2 inner join T3 on T2.T3_ID = T3.T3_ID) on T2.T1_ID = T1.T1_ID"


Смену компонентов доступа тоже правкой ресурса производить?
А, понял там у нас АДО/БДЕ!
А параметры подключения с одного типа сервера на другой?
И все это только ради того, чт бы не открывать еще один раз проект в ИДЕ?
Или это на тот случай, когда покупатель софта купит другой сервер?
Типа сменил в ресурсах нужные буквы и тревожить программера не надо?

:)


 
Игорь Шевченко ©   (2006-10-25 15:15) [53]

Курдль ©   (25.10.06 15:09) [50]


> Ага! У одной запрос
> "... T1 left outer join (T2, T3) on T2.T3_ID = T3.T3_ID
> and T2.T1_ID = T1.T1_ID"
> а у другой:
> "... T1 left outer join (T2 inner join T3 on T2.T3_ID =
> T3.T3_ID) on T2.T1_ID = T1.T1_ID"


Воедино их свести не получается ? Так, чтобы обе СУБД понимали ?


>  Пиши мне на мыло.


Написал


 
Desdechado ©   (2006-10-25 15:24) [54]

> Вьюхи - еще большее зло, чем хранимые процедуры
А я таки солидарен. На все запросы вьюх не напасешься. Зато оптимизатором они пережевываются ГОРАЗДО хуже, чем простые запросы, особенно, если нужно объединить несколько вьюх, каждая из которых соединяет несколько таблиц.
По крайней мере, для FB1.5 и ORA9.2 это правда. Тормоза обеспечены.


 
Игорь Шевченко ©   (2006-10-25 15:26) [55]


> Зато оптимизатором они пережевываются ГОРАЗДО хуже, чем
> простые запросы, особенно, если нужно объединить несколько
> вьюх, каждая из которых соединяет несколько таблиц


А примеры планов в студию можно ?
С вьюхами и без вьюх...


 
Курдль ©   (2006-10-25 15:44) [56]


> Reindeer Moss Eater ©   (25.10.06 15:14) [52]
> Смену компонентов доступа тоже правкой ресурса производить?
> А, понял там у нас АДО/БДЕ!


Смена компонентов - это больное место Delphi. Однако, если смириться с некоторой потерей качества при использовании "родных" компонентов оракла, вполне подходящий вариант использования набора "SQL Direct".
А если оракл не предполагался - эти компоненты отлично себя зарекомендовали.

В проектах .NET проблема со "сменой компонентов" не стоит.


 
Игорь Шевченко ©   (2006-10-25 15:45) [57]

Курдль ©   (25.10.06 15:44) [56]


> В проектах .NET проблема со "сменой компонентов" не стоит.


Разве ? А Corelab свои поделки для .Net от нечего делать продает ? :)


 
Курдль ©   (2006-10-25 15:48) [58]


> Игорь Шевченко ©   (25.10.06 15:45) [57]
> Разве ? А Corelab свои поделки для .Net от нечего делать продает ? :)

Наверное...  Я их поделки не покупал, т.к. не нуждался.


 
Reindeer Moss Eater ©   (2006-10-25 15:52) [59]

Ну так все таки.
Сменили текст запросов во всех TQuery.
И даже сменили параметры TDatabase.
И все это путем ковыряния ресурсов.

Дальше запускаем нашу чудо-мега-программу после такой операции.
Допустим что-то несрастается с первого раза.
Продолжаем мучать бедный экзешник или воспользуемся IDE и его отладчиком?

Смысл-то великий в чем всей этй ботвы?


 
Курдль ©   (2006-10-25 16:03) [60]


> Reindeer Moss Eater ©   (25.10.06 15:52) [59]
> Смысл-то великий в чем всей этй ботвы?


Смысл ботвы в том, чтобы предостеречь аутора от "собрать все запросы в одной таблице и написать одну хранимую процедуру, в которую передавать ID запроса из таблицы, в которой он хранится."


 
Reindeer Moss Eater ©   (2006-10-25 16:05) [61]

У аутора имена схем, таблиц и столбцов меняются как перчатки.
Кто его убережет от смены имен процедур и имен схем в которых процедуры живут.


 
Сатир   (2006-10-26 11:50) [62]


> Смысл ботвы в том, чтобы предостеречь аутора от "собрать
> все запросы в одной таблице и написать одну хранимую процедуру,
>  в которую передавать ID запроса из таблицы, в которой он
> хранится."

вот я-то как раз и против такого подхода.
мне больше по душе написать для каждого селекта свою хранимую процедуру, которая будет открывать курсор для этого запроса. Тут же отпадает вопрос о переменном числе входящих параметров.
Но руководитель решил вообще ничего не трогать и оставить всё как есть.
Поэтому продолжение спора больше не несёт практический характер.


 
Sergey13 ©   (2006-10-26 11:53) [63]

> Но руководитель решил вообще ничего не трогать и оставить
> всё как есть.

Он показал себя мудрым руководителем. 8-)


 
Курдль ©   (2006-10-26 11:56) [64]


> Sergey13 ©   (26.10.06 11:53) [63]
> Он показал себя мудрым руководителем. 8

Либо почитал советы про убийство об стену :)


 
Сатир   (2006-10-26 12:22) [65]

короче, наваяли кучу однодневных софтинок для собственных нужд, причём ваяли их в основном разные люди, которые приходили на испытательный срок, а теперь пытаются это всё как-то систематизировать, придумать какую-то общую архитектуру классов, но как это сделать, никто не имеет понятия.
просто кто-то где-то услышал, что так будет хорошо.)))


 
sergey888   (2006-10-26 12:36) [66]

короче, наваяли кучу однодневных софтинок для собственных нужд, причём ваяли их в основном разные люди, которые приходили на испытательный срок, а теперь пытаются это всё как-то систематизировать, придумать какую-то общую архитектуру классов, но как это сделать, никто не имеет понятия.
просто кто-то где-то услышал, что так будет хорошо.)))


Скупой платит трижды!


 
Сатир   (2006-10-26 13:31) [67]


> Скупой платит трижды!

а лох - по жизни:)


 
Сатир   (2006-10-26 15:06) [68]


> Почитай про биндовые переменные и их использование в динамическом
> SQL.

ref cursor нельзя использовать с динамическим SQL.


 
k2 ©   (2006-10-26 15:25) [69]

Сатир   (26.10.06 15:06) [68]
а как же open ..for ..? или только динамический execute immediate считаете?


 
ANB ©   (2006-10-26 15:28) [70]


> ref cursor нельзя использовать с динамическим SQL.

можно.


 
Игорь Шевченко ©   (2006-10-26 15:41) [71]

Сатир   (26.10.06 15:06) [68]


> ref cursor нельзя использовать с динамическим SQL.


create or replace function dyna_query(query varchar2) return sys_refcursor
as
rc sys_refcursor;
begin
 open rc for query;
 return rc;
end;
/

select dyna_query("select distinct owner from all_objects") from dual;


 
Сатир   (2006-10-26 16:23) [72]

млиа... нельзя использовать реф курсор для запроса с заранее неизвестным количеством связанных переменных


 
Сатир   (2006-10-26 16:24) [73]

вот вам пример из живого кода
if
   fmSmallDict.RunDialog("select to_char(t.ID_TYPE_STUFF) id, t.NAME_TYPE_STUFF name from wk.wkv_type_staff t where t.sign_activity = 1", id, "Вид материала") then
   F1BookImportWares.TextRC[aRow, aCol] := id;

это по сабжу...


 
Игорь Шевченко ©   (2006-10-26 16:27) [74]

Сатир   (26.10.06 16:23) [72]


> нельзя использовать реф курсор для запроса с заранее неизвестным
> количеством связанных переменных


А нафига такой сыр-бор ?


> if
>    fmSmallDict.RunDialog("select to_char(t.ID_TYPE_STUFF)
> id, t.NAME_TYPE_STUFF name from wk.wkv_type_staff t where
> t.sign_activity = 1", id, "Вид материала") then
>    F1BookImportWares.TextRC[aRow, aCol] := id;


И чего тебе не нравится ? Кто-то что-то выбирает из данных запроса, затем это что-то выбранное идет в спредшит.


 
Сатир   (2006-10-26 16:32) [75]

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


 
Игорь Шевченко ©   (2006-10-26 16:36) [76]

Сатир   (26.10.06 16:32) [75]


> мне не нравится, что этот запрос каждый раз будет разбираться
> Ораклом.


А что, у вас использование Shared pool законом запрещено ? Так оракл на законы плюет, посмотри статистику, оцени количество ресурсов, потраченных на первый И ВСЕ ПОСЛЕДУЮЩИЕ разборы.


> и что этот запрос жёстко зашит в коде


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


 
Сатир   (2006-10-26 16:38) [77]


> если wk - это имя схемы, то проще синоним создать

на моё предложение создать синомимы, руководство ответило, что синонимы создавать не велено. причину не назвали.


 
Игорь Шевченко ©   (2006-10-26 16:40) [78]

Сатир   (26.10.06 16:38) [77]

Твое руководство - твои проблемы :)


 
Sergey13 ©   (2006-10-26 16:42) [79]

> [77] Сатир   (26.10.06 16:38)
> на моё предложение создать синомимы, руководство ответило,
> что синонимы создавать не велено. причину не назвали.
Может оно (руководство) не поняло этого слова? 8-)


 
Сатир   (2006-10-26 16:53) [80]


> Может оно (руководство) не поняло этого слова? 8-)

как вариант:)



Страницы: 1 2 3 вся ветка

Форум: "Прочее";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.62 MB
Время: 0.044 c
10-1125833508
Lab74
2005-09-04 15:31
2006.11.12
Использование ActiveX DLL без регистрации её в реестре


1-1159471239
guav
2006-09-28 23:20
2006.11.12
Аналог GetTextExtentPoint32 / GetTextExtentExPoint / TCanvas.Text


15-1161646125
Германн
2006-10-24 03:28
2006.11.12
Все спят, а я балдею под JMJ


15-1161940134
Hg
2006-10-27 13:08
2006.11.12
Примеры к книге Indy In Depth


1-1159707242
RASkov
2006-10-01 16:54
2006.11.12
RectToObject и наоборот





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский