|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
Ребята,есть вопрос. В одном из событий идёт обращение к базе.Но нужно выбирать значения всегда из разных таблиц базы. Как в запросе представить имя таблицы переменной..Кокакой синтаксис правильный ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 12:15 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
- SetSqlSelect - CreateFromSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 12:28 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
SasaR- SetSqlSelect - CreateFromSQL это решается вопрос через DW... А нужно без него..Ну всё равно спасибо.Вопрос решён с использованием Курсора..) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 12:49 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
Andreas_84Ну всё равно спасибо.Вопрос решён с использованием Курсора..) Какой ужОсъ! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 13:32 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
EXECUTE - IMMEDIATE ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 14:28 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
RiskaEXECUTE - IMMEDIATE Вы с упорством некоего животного все время пихаете EXECUTE - IMMEDIATE куда он не лезет. Это Dynamic SQL Format 1 SQL statement, а для того, что спрашивают нужно Dynamic SQL Format 4 SQL statement. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 14:37 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
Ну или хотя-бы Dynamic SQL Format 3 SQL statement... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 14:48 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
sqlca.SyntaxFromSQL ( sqlselect, presentation, err ) затем применить этот синтакс создавая динамически datastore - делай с резалтсетом что хочешь ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 15:26 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
SasaRsqlca.SyntaxFromSQL ( sqlselect, presentation, err ) затем применить этот синтакс создавая динамически datastore - делай с резалтсетом что хочешь Есть нюанс один. Ваш запрос будет запускаться дважды. И если в sqlselect реально вызов процедуры с инсертами - тогда у вас появиться куча пустых записей :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 15:52 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
andy753SasaRsqlca.SyntaxFromSQL ( sqlselect, presentation, err ) затем применить этот синтакс создавая динамически datastore - делай с резалтсетом что хочешь Есть нюанс один. Ваш запрос будет запускаться дважды. И если в sqlselect реально вызов процедуры с инсертами - тогда у вас появиться куча пустых записей :) "В огороде бузина - а в киеве дядька".... Каким макаром это связано с топиком и, уже интересно, каким макаром он будет запускаться дважды ? Или то ньюанс - мол если таким макаром создать датастор на базе запроса с сохр.процедурой в которой есть инсерты, то эта процедура запустится и при создании датастора, а затем и при ретриве ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2008, 12:41 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
SasaRИли то ньюанс - мол если таким макаром создать датастор на базе запроса с сохр.процедурой в которой есть инсерты, то эта процедура запустится и при создании датастора, а затем и при ретриве ? А Вы никогда не смотрели, что делает PB в случае создания SyntaxFromSQL? Он запускает запрос для определения ResultSet'a. Так что если например ResultSet зависит от переменных передаваемых в процедуру, то вообще работать не будет. И уменьшение скорости работы будет в 2 раза... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2008, 12:45 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
Локшин Марк Так что если например ResultSet зависит от переменных передаваемых в процедуру, то вообще работать не будет. ГЛУПОСТИ ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2008, 19:30 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
ФилиппЛокшин Марк Так что если например ResultSet зависит от переменных передаваемых в процедуру, то вообще работать не будет. ГЛУПОСТИ Да неужели? Ну изобразите: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2008, 09:40 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
Ситуация, опять-таки, не новая. Если автора устраивает решение с курсором, то флаг в руки, как говориться. Вопрос из любопытства. Список возможных имён таблиц известен, или произволен ? Если он известен, то надо сделать RESULT SET , одинаковым для всех таблиц, даже, если в реале он не одинаковый, добавить в каждый селект константы-путышки нужных типов. Тогда данные можно будет тянуть при помощи UNION, параметры запуска, добавленные в where каждого селекта будут отсекать лишние селекты. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2008, 09:49 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
Локшин МаркФилиппЛокшин Марк Так что если например ResultSet зависит от переменных передаваемых в процедуру, то вообще работать не будет. ГЛУПОСТИ Да неужели? Ну изобразите: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Это у вас искусственным образом НЕ ResultSet зависит от переменных передаваемых в процедуру, а лист колонок ею возвращаемый (ResultSet это вообще то ряды), и это искусственное извращение в контексте вопроса никому не интересно. В случае когда процедура может быть приспосабливаема для кажого клиента к примеру, чтоб иметь спец логику, то если интерфейс стабильный (то бишь набор аргументов не меняется), а лист колонок (ну то что в ряды суется) заранее не известен - SyntaxFromSQL и есть самое удобное решение. Один (первый) раз зовётся с тупыми аргументами, чтоб ResultSet был с нулём рядов, синтакс кешируется и вперёд... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2008, 17:11 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
ну И то что в ряды суется ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2008, 18:42 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
ФилиппЭто у вас искусственным образом НЕ ResultSet зависит от переменных передаваемых в процедуру, а лист колонок ею возвращаемый (ResultSet это вообще то ряды), и это искусственное извращение в контексте вопроса никому не интересно. Бла, бла, бла. Это ResultSet. Это набор данных - дословный перевод (который собственно и отражает суть дела) - результирующие множество. Какие ряды? Вы о чем? Согласен, пример который я привел - несколько искуственный, но модельный и отражает суть дела. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 09:48 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
Сохр.процедуры - запускаются :( Решается - как описал Филипп. А запросы - кажися не запускаются. Во всяком случае как-то не так, без резалтсета. Что если сделать .SyntaxFromSQL с "декартовым произведением" запросом ? Неужто при создании запустится и зависнет ? Вряд ли... Сколько раз делал - не замечал такого эффекта К сожалению не могу проверить сейчас ... Во всяком случае в паинтере, при создании датавиндов - не запускался, но быстро вытягивал заголовки и типы набора данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 11:53 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
SasaRСохр.процедуры - запускаются :( Решается - как описал Филипп. А запросы - кажися не запускаются. Во всяком случае как-то не так, без резалтсета. Что если сделать .SyntaxFromSQL с "декартовым произведением" запросом ? Неужто при создании запустится и зависнет ? Вряд ли... Сколько раз делал - не замечал такого эффекта К сожалению не могу проверить сейчас ... Во всяком случае в паинтере, при создании датавиндов - не запускался, но быстро вытягивал заголовки и типы набора данных. Есть всякие хитрые опции типа Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 12:10 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
Локшин МаркЭто ResultSet. Это набор данных - дословный перевод (который собственно и отражает суть дела) - результирующие множество. Какие ряды? Вы о чем? Согласен, пример который я привел - несколько искуственный, но модельный и отражает суть дела. Это пример недоработки дизайна. Тут есть как минимум две проблемы дизайна: 1) Набор столбцов результата - это часть интерфейса функции. Он не должен меняться. 2) Вызывающий код реализует часть вызываемой функции: дублируется код принятия решения о кол-ве стоблцов - один раз в вызывающем коде, второй раз в функции. Если изменить в одном из мест, не поменяв в другом, то этот код перестанет работать. В том примере на самом деле нужны две функции (соответственно и два DW), а принятие решения о том какую из них вызвать должно происходить только в вызывающем коде . ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 12:26 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyЛокшин МаркЭто ResultSet. Это набор данных - дословный перевод (который собственно и отражает суть дела) - результирующие множество. Какие ряды? Вы о чем? Согласен, пример который я привел - несколько искуственный, но модельный и отражает суть дела. Это пример недоработки дизайна. Тут есть как минимум две проблемы дизайна: 1) Набор столбцов результата - это часть интерфейса функции. Он не должен меняться. 2) Вызывающий код реализует часть вызываемой функции: дублируется код принятия решения о кол-ве стоблцов - один раз в вызывающем коде, второй раз в функции. Если изменить в одном из мест, не поменяв в другом, то этот код перестанет работать. В том примере на самом деле нужны две функции (соответственно и два DW), а принятие решения о том какую из них вызвать должно происходить только в вызывающем коде . Я этот пример написал, чтобы просто было явно видно что могут быть проблемы. А проблемы быть могут - я не помню, с какими параметрами там билдер вызывает эти процедуры, то-ли null то-ли 0, но если при этом параметре процедура ничего не возвращает (допустим считается корректным только больше 0 параметр, а с другими она выдает ошибку что мол недопустимый параметр). И всё... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 14:26 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
Локшин МаркЯ этот пример написал, чтобы просто было явно видно что могут быть проблемы С этим я не спорю. Проблемы всегда можно себе устроить :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 15:23 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyЛокшин МаркЭто ResultSet. Это набор данных - дословный перевод (который собственно и отражает суть дела) - результирующие множество. Какие ряды? Вы о чем? Согласен, пример который я привел - несколько искуственный, но модельный и отражает суть дела. Это пример недоработки дизайна. Тут есть как минимум две проблемы дизайна: 1) Набор столбцов результата - это часть интерфейса функции. Он не должен меняться. 2) Вызывающий код реализует часть вызываемой функции: дублируется код принятия решения о кол-ве стоблцов - один раз в вызывающем коде, второй раз в функции. Если изменить в одном из мест, не поменяв в другом, то этот код перестанет работать. В том примере на самом деле нужны две функции (соответственно и два DW), а принятие решения о том какую из них вызвать должно происходить только в вызывающем коде . Вот у меня как раз реализация, работающая у десятков клиентов, где набор СТОЛБЦОВ неизвестен заранее , а вот function signature хранимой процедуры не меняется (если арргументы бессмысленны, то просто НОЛЬ рядов возвращается, а даже если >0, то для служебного вызова сделанного для каширования синтаксиса из которого строится dataobject, это значения не имеет). С помощью SyntaxFromSQL всё это очень эелегантно работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 22:06 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
ФилиппВот у меня как раз реализация, работающая у десятков клиентов, где набор СТОЛБЦОВ неизвестен заранее Набор столбцов результата зависит от аргументов? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2008, 12:53 |
|
Имя таблицы представит переменной..
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyФилиппВот у меня как раз реализация, работающая у десятков клиентов, где набор СТОЛБЦОВ неизвестен заранее Набор столбцов результата зависит от аргументов? Нет, зависит от того, что клиент написал в его версии хранимой процедуры, или от того как мы её поменяли с новым релизом. А его зависимость от значения аргументов есть искусственная глупость, которую обсуждать не стоит, мы же это уже выше решили :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2008, 15:54 |
|
|
start [/forum/topic.php?fid=15&msg=35659509&tid=1336468]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 472ms |
0 / 0 |