Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.24;
Скачать: CL | DM;

Вниз

Какое ограничение имеет свойство компонента 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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.024 c
14-1097041840
9k33
2004-10-06 09:50
2004.10.24
Кодерам и заказчикам


9-1087477228
Sormy
2004-06-17 17:00
2004.10.24
Как преобразовывать палитры цветов?


6-1092112346
r9000
2004-08-10 08:32
2004.10.24
Помогите, пожалуйста с Web-сервером


1-1097197346
Артем К.
2004-10-08 05:02
2004.10.24
Сравнение двух IP-адресов


9-1084898608
Warlock
2004-05-18 20:43
2004.10.24
Зацените мое первое творение