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

Вниз

Какое ограничение имеет свойство компонента TQuery–SQL по длине?   Найти похожие ветки 

 
Sergey_F ©   (2004-09-30 14:32) [0]

Какое ограничение имеет свойство компонента TQuery – SQL по длине скрипта?
Можно ли, больше 256 символов?
И ещё, подскажите, пожалуйста, как в Delphi запустить процедуру или функцию из Oracle?

Спасибо за любые советы и комментарии.


 
pasha_golub ©   (2004-09-30 14:39) [1]

TQuery.SQL: TStrings

В чем вопрос?


 
pasha_golub ©   (2004-09-30 14:41) [2]

И в догонку. Не длина скрипта, а длина запроса.


 
Layner ©   (2004-09-30 15:13) [3]

как в Delphi запустить процедуру или функцию из Oracle?
Что то типа, сейчас синтаксис не помню,
ADOQuery.SQL.Text("EXEC procedura_test");
ADOQuery.Execute.


 
Ega23 ©   (2004-09-30 15:26) [4]

Можно ли, больше 256 символов?

Ну, если на то пошло, то "больше 255 символов"


 
Sergey_F ©   (2004-10-04 15:35) [5]

Большое спасибо Layner. Принцип понятен.

Вопрос возник из-за проблемы:
Query.SQL.Add("SELECT * FROM Tab Where ...");
Когда запрос "SELECT ..." не большой, всё нормально работает, но если он достаточно большой возникает ошибка.


 
Polevi ©   (2004-10-04 15:44) [6]

зависит от БД, у MSSQL 4096 байт если не ошибаюсь


 
Ega23 ©   (2004-10-04 15:44) [7]

но если он достаточно большой возникает ошибка.

Ой что-то не верится мне....
Помню, у меня запросец один был динамический, около 2К. И ничего, всё замечательно "шуршало"...


 
Fredericco ©   (2004-10-04 15:47) [8]

Ega23 ©   (30.09.04 15:26) [4]
Вообще то 256 символом, 255 это последний. :-)))
Так что афтар правильно спросил.


 
Ega23 ©   (2004-10-04 15:50) [9]

Fredericco ©   (04.10.04 15:47) [8]

Так ведь в нулевом байте в строке такого типа длина строки прописана. А значит, что значащих СИМВОЛОВ в строке не может быть больше, чем 255.


 
Zacho ©   (2004-10-04 15:55) [10]

У IB - примерно 64K


 
Fredericco ©   (2004-10-04 15:58) [11]

2 Ega23 ©   (04.10.04 15:50) [9]
Ты прав.
В нулевой байт мы полезной информации не пишем :-)
Так что он не считается.


 
Ega23 ©   (2004-10-04 16:01) [12]

Polevi ©   (04.10.04 15:44) [6]
зависит от БД, у MSSQL 4096 байт если не ошибаюсь


Гм... А как же я тогда БЛОБы по 5 Мб туда-сюда таскаю?


 
Vlad ©   (2004-10-04 16:05) [13]


> Ega23 ©   (04.10.04 16:01) [12]


> Гм... А как же я тогда БЛОБы по 5 Мб туда-сюда таскаю?

как связаны блобы и длина SQL запроса?


 
Ega23 ©   (2004-10-04 16:07) [14]

как связаны блобы и длина SQL запроса?

Неточно выразился. Бинарные данные я таскаю, причём в виде
0xFFAADD0055.......
Иногда достаточно большие такие вот "кишки".


 
Vlad ©   (2004-10-04 16:08) [15]


> Ega23 ©   (04.10.04 16:07) [14]

ты их подставляешь как параметр в запрос?


 
Ega23 ©   (2004-10-04 17:15) [16]

Да кабы я помнил!  :о)
Сейчас посмотрю...


        ss:="Declare @X int Select @X=Max(TimeWinCod)+1 from TimeWins "+
            "Insert into TimeWins (TimeWinCod, TimeWinNam, TimeWinLab, TimeWinOrd, TimeWinMsk, TimeWinNot, TimeWinImg) "+
            "Values (@X,"+ValX(CDSTimeWins.FieldByName("TimeWinNam").AsString,",")+
                       ValX(CDSTimeWins.FieldByName("TimeWinLab").AsString,",")+
                       ValX(CDSTimeWins.FieldByName("TimeWinOrd").AsInteger,",");

                       if CDSTimeWins.FieldByName("TimeWinMsk").AsBoolean then ss:=ss+"1," else ss:=ss+"0,";

                ss:=ss+ValX(CDSTimeWins.FieldByName("TimeWinNot").AsString,",");
ss:=ss+CDSTimeWins.FieldByName("TimeWinImg").AsString+")";
QuExec(DMpas.RQTemp,ss);


 
Ega23 ©   (2004-10-04 17:16) [17]

Ну да, TimeWinImg - поле типа image


 
Мюмзик   (2004-10-05 08:29) [18]

Ega23 ©
я бы тоже хотел знать, как ты их таскаешь и при чем тут длина запроса


 
Zlod3y ©   (2004-10-05 09:05) [19]

насколько я помню, кажись 64К, и от СУБД не зависит, человек про компоненту (TQuery) спросил ведь


 
den_777   (2004-10-05 09:36) [20]


> насколько я помню, кажись 64К, и от СУБД не зависит, человек
> про компоненту (TQuery) спросил ведь

Зависит именно от СУБД, причем у некоторых СУБД есть настройки на максимальный размер текста SQL-запроса.(Например в INFORMIX такая настройка точно есть.)


 
Zlod3y ©   (2004-10-05 09:40) [21]

den_777   (05.10.04 09:36) [20]
ну не про СУБД спросили, а про компонент, неужели так трудно вопрос прочитать, а?


 
Ega23 ©   (2004-10-05 09:48) [22]

насколько я помню, кажись 64К, и от СУБД не зависит, человек про компоненту (TQuery) спросил ведь

Если бы было так, то, думаю, Борланд жёстко зашил бы данное ограничение в TQuery


 
Sergey_F ©   (2004-10-05 10:28) [23]

СУБД у меня Oracle 8.17i (хорошо работает и с таблицами более 1,5 мил. строк), в ней этот Select замечательно работает. А когда я его на прямую начинаю в Delphi вставлять возникает проблема. Дело не в СУБД.


 
den_777   (2004-10-05 11:16) [24]


> ну не про СУБД спросили, а про компонент, неужели так трудно
> вопрос прочитать, а?

Ответ тоже внимательно читать надо, желательно пытаясь понять смысл ответа. Повторюсь. Ограничение именно в СУБД. И как правильно заметил EGA23, что если бы во всех базах было одинаковое ограничение на размер текста SQL-запроса,то Борланд жёстко зашил бы данное ограничение в TQuery.Однако такого ограничения именнов в TQUERY нет.


> Sergey_F ©   (05.10.04 10:28) [23]
> СУБД у меня Oracle 8.17i (хорошо работает и с таблицами
> более 1,5 мил. строк), в ней этот Select замечательно работает.
> А когда я его на прямую начинаю в Delphi вставлять возникает
> проблема. Дело не в СУБД


Проблема может быть в том, что что когда ты работаешь с ORACLE напрямую (т.е. используя какую-то программу из поставки самого ORACLE )  и когда работаешь через TQUERY (кстати ты до сих пор не назвал набор компонентов через которые работаешь BDE,DBEXPRES или еще что-то) то могут использоваться разные протоколы, в которых соответственно могут быть разные ограничения. Пример из INFORMIX. Когда у меня запрос был более 2кб то из dbaccess(утилита INFORMIX) запрос проходил нормально, а TQUERY(BDE) выдавал ошибку. Разница была именно в протоколах и настройка которая влияла на максимальный размер текста SQL-запроса через сетевые приложения, абсолютно не влияла на dbaccess. Если хочешь чтобы тебе помогли, то назови набор компонентов, размер выполняемого SQL-запроса и ошибку которую возвращает ORACLE-сервер.


 
Sergey_F ©   (2004-10-06 17:27) [25]

Использую:
TQUERY(BDE) / Используя компонент TDatabase /

Возникает ошибка:
[Error] ORTypeMain.pas(178): String literals may have at most 255 elements

Для проверки использовал запрос:
   SQL.Clear;
   SQL.Add("SELECT kkghjhjghjghjghghjghjghjghjghjghghjghjhgljlkghjghjghjghjghkljjjkdfgdfgdffhgjghjhfffffffffffffgljlkkllkjkljljlkjkljlkjlkj lkjkljkljkljlkkkkdfgdfgfdgfgfddfgfgfdfdgdfgfdgdfgdfgfdgffdglkjkljlkjlkjlkjlkjlkjkljlkjlkjlkjkljljlkjlkjljljlkjljjlkjjdfg dfgdhkjhjhjkhjkhhjhjkjhjhhhkjhjkhkjhjkhkjjjjjjjjjjjjfl FROM dual");
   try
     Open;
   except
     on E:Exception do DisplayStatus(E.Message);
   end;


Сергей.


 
Sergey_F ©   (2004-10-06 18:14) [26]


> den_777   (05.10.04 11:16) [24]
> (кстати ты до сих пор не назвал набор компонентов через
> которые работаешь BDE,DBEXPRES или еще что-то)


А через чего лучьше подключаться к Oracle?
А как можно подключиться миную BDE, ODBC (например используя OCI.DLL) ?
Спасибо!


 
}|{yk ©   (2004-10-06 18:20) [27]

ODAC


 
den_777   (2004-10-06 20:25) [28]

Замени

> SQL.Add("SELECT kkghjhjghjghjghghjghjghjghjghjghghjghjhgljlkghjghjghjghjghkljjjkdfgdfgdffhgjghjhfffffffffffffgljlkkllkjkljljlkjkljlkjlkj  
> lkjkljkljkljlkkkkdfgdfgfdgfgfddfgfgfdfdgdfgfdgdfgdfgfdgffdglkjkljlkjlkjlkjlkjlkjkljlkjlkjlkjkljljlkjlkjljljlkjljjlkjjdfg  
> dfgdhkjhjhjkhjkhhjhjkjhjhhhkjhjkhkjhjkhkjjjjjjjjjjjjfl FROM
> dual");

на
SQL.Text:="SELECT kkghjhjghjghjghghjghjghjghjghjghghjghjhgljlkghjghjghjghjghkljjjkdfgdfgdffhgjghjhfffffffffffffgljlkkllkjkljljlkjkljlkjlkj  lkjkljkljkljlkkkkdfgdfgfdgfgfddfgfgfdfdgdfgfdgdfgdfgfdgffdglkjkljlkjlkjlkjlkjlkjkljlkjlkjlkjkljljlkjlkjljljlkjljjlkjjdfg  dfgdhkjhjhjkhjkhhjhjkjhjhhhkjhjkhkjhjkhkjjjjjjjjjjjjfl FROM dual";
и будет тебе счастье.
Это действительно не имеет никакого отношения к базе данных. Ошибку в следующий раз указывай сразу.


 
pasha_golub ©   (2004-10-06 20:28) [29]

den_777   (06.10.04 20:25) [28]
Совершенно верно. Я об этом еще во втором посте сказал.


 
Romkin ©   (2004-10-06 20:41) [30]

Это имеет отношение к BDE: она не селектит поля более 255 символов напрямую. Любое такое поле считается BLOB и тащится отдельно


 
sniknik ©   (2004-10-06 23:41) [31]

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

разделить вот так, и пройдет
SQL.Add("SELECT kkghjhjghjghjghghjghjghjghjghjghghjghjhgljlkghjghjghjghjghkljjjkdfgdfgdffhgjghjhfffffffffffffgljlkkllkjkljljlkjkljlkjlkj "+
"lkjkljkljkljlkkkkdfgdfgfdgfgfddfgfgfdfdgdfgfdgdfgdfgfdgffdglkjkljlkjlkjlkjlkjlkjkljlkjlkjlkjkljljlkjlkjljljlkjljjlkjjdf g"+
"dfgdhkjhjhjkhjkhhjhjkjhjhhhkjhjkhkjhjkhkjjjjjjjjjjjjfl FROM dual");


 
Palladin ©   (2004-10-06 23:46) [32]


> у MSSQL 4096 байт если не ошибаюсь

ошибаешься...


 
Sergey_F ©   (2004-10-07 10:18) [33]


> den_777   (06.10.04 20:25) [28]
> Замени
> на
> SQL.Text:="SELECT
>  kkghjhjghjghjghghjghjghjghjghjghghjghjhgljlkghjghjghjghjghkljj
>  jkdfgdfgdffhgjghjhfffffffffffffgljlkkllkjkljljlkjkljlkjlkj
>  lkjkljkljkljlkkkkdfgdfgfdgfgfddfgfgfdfdgdfgfdgdfgdfgfdgffdgl
>  kjkljlkjlkjlkjlkjlkjkljlkjlkjlkjkljljlkjlkjljljlkjljjlkjjdfg
>  dfgdhkjhjhjkhjkhhjhjkjhjhhhkjhjkhkjhjkhkjjjjjjjjjjjjfl
> FROM dual";
> и будет тебе счастье.
> Это действительно не имеет никакого отношения к базе данных.
> Ошибку в следующий раз указывай сразу.

А это на самом деле большая разница?


> sniknik ©   (06.10.04 23:41) [31]
> это ограничение компилатора дельфей,
> нельзя строки больше определенной длинны в нем писать.
>
> разделить вот так, и пройдет
> SQL.Add("SELECT kkghjhjghjghjghghjghjghjghjghjghghjghjhgljlkghjghjghjghjghkljjjkdfgdfgdffhgjghjhfffffffffffffgljlkkllkjkljljlkjkljlkjlkj  
> "+
> "lkjkljkljkljlkkkkdfgdfgfdgfgfddfgfgfdfdgdfgfdgdfgdfgfdgffdglkjkljlkjlkjlkjlkjlkjkljlkjlkjlkjkljljlkjlkjljljlkjljjlkjjdf  
> g"+
> "dfgdhkjhjhjkhjkhhjhjkjhjhhhkjhjkhkjhjkhkjjjjjjjjjjjjfl
> FROM dual");

Хорошая мысль, попробую.

Спасибо!



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

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

Наверх




Память: 0.54 MB
Время: 0.034 c
6-1092379795
Дмитрий Ботвин
2004-08-13 10:49
2004.10.24
Список служб на удаленном компьютере


14-1097162305
petro
2004-10-07 19:18
2004.10.24
подсчет трафика


10-1050575071
Vofka
2003-04-17 14:24
2004.10.24
Помогите начинающему с CORBA


4-1095696470
GrEG
2004-09-20 20:07
2004.10.24
Проблема с ReadDirectoryChangesW


14-1097104726
saNat
2004-10-07 03:18
2004.10.24
Не выполняется операция





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский