![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Где ошибка в ХП [D5, IB6.x]
Pashok © (2003-01-28 10:47:00)Вроде все при на мой взгляд верно, но выполняться не хочет.
create procedure vybor (ipKRIT char(20))
returns (opPhone CHAR(7), opName CHAR(30), opStreet CHAR(37))
AS
Begin
for select * from kvartir where name like ipKRIT
into :opPhone , :opName, :opStreet
DO SUSPEND;
end
Не подскажите ?
И ещё хотел задать вопрос можно ли из консоли ИБ 6.0 через Интерактив SQL запихать в базу хранимую процедуру ?
Pashok (2003-01-29 10:23:00) [1]
> Прараметр надо передавать в скобках.
> Вот так IBQuery1.SQL.Add("select * from vybor " +"(" +(df)
> +")");
>
> И будет тебе щасье.
>
> Саня
Всем огромное пасиба. Вроде работает и мозги чуть поправились....
Первая прога на ИБ 6-ой версии вроде удалась осталось перенести её на сервер и проверить там работоспособность.
Удачи ВСЕМ и мне чуть чуть ....
Best Regards!
AlexSerp (2003-01-29 09:07:00) [2]Наташ, так здесь впрос был конкретно по IB.
Естественно, что если делается для разных серверов, то и подход другой.
Саня ;-)
Наталия (2003-01-29 08:59:00) [3]И помнить при этом формат представления дат,чисел и т.п. на каждом типе сервера?
AlexSerp (2003-01-29 08:56:00) [4]Наталия, а так ли это накладно - вызов функции преобразлвания в строку? ;-)
Саня
Наталия (2003-01-29 06:06:00) [5]AlexSerp (28.01.03 16:03)
>А мне всегда интересно было, зачем работать через параметры, когда во время формирования запроса значение УЖЕ известно. Его проще подставить сразу.
При использовании параметров не нужно переводить формат представления данных в строковый, что актуально,например, для дат.
AlexSerp (2003-01-28 16:36:00) [6]А если в цикле, то перед циклом желательно выполнить Prepare.
Ну об этом и собаки не брешут.
Плюс после цикла UnPrepare. ;-)
Саня
Wolf (2003-01-28 16:30:00) [7]А если в цикле, то перед циклом желательно выполнить Prepare.
AlexSerp (2003-01-28 16:03:00) [8]2Wolf ©
А мне всегда интересно было, зачем работать через параметры, когда во время формирования запроса значение УЖЕ известно. Его проще подставить сразу.
А вот если в цикле потом работать, то твой пример Wolf ©"в самую дырочку".
Просто из отрывка кода не понятно, в цикле это будет ии нет.
Саня
Wolf (2003-01-28 15:59:00) [9]Ну вы блин даете... (это про поиск : )
Кстати, а чего не засунуть в дизайнере
IBQuery1.SQL следующее select * from vybor(:df)
А потом работать через параметры?
AlexSerp (2003-01-28 15:42:00) [10]Слава яйцам, появилась ХП.
Теперь через
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add("select * from vybor "+(df));
IBQuery1.Open;
не хочет пердаваться в процедуру параметр и правильно делает.
все конечно передается строковым зачением, а именно вместо параметра присутствует DF.
какой компонент позволят передать "select * from vybor " и далее параметр (значение его) ?
Прараметр надо передавать в скобках.
Вот так IBQuery1.SQL.Add("select * from vybor " +"("+(df) +")");
И будет тебе щасье.
Саня
Delirium^.Tremens (2003-01-28 15:39:00) [11]
> за помощь спасибо.
> но это не последняя подсказка ......
> такшто держитесь ;-)
Ну, вот из за тебя кеды промокли... :-)
Pashok (2003-01-28 15:37:00) [12]Обожди сам ща гляну ....
вроде не дебил с локальными легко а с серверными БД напряг месяц как начал знакомство, 3 раз лезу в ИБ базу
за помощь спасибо.
но это не последняя подсказка ......
такшто держитесь ;-)
Pashok (2003-01-28 15:30:00) [13]Слава яйцам, появилась ХП.
Теперь через
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add("select * from vybor "+(df));
IBQuery1.Open;
не хочет пердаваться в процедуру параметр и правильно делает.
все конечно передается строковым зачением, а именно вместо параметра присутствует DF.
какой компонент позволят передать "select * from vybor " и далее параметр (значение его) ?
AlexSerp (2003-01-28 15:28:00) [14]Много разных средств для работы с IB смотрел.
Лучше QuickDesk я пока не видел. Это я ТОЛЬКО про себя.
Саня
AlexSerp (2003-01-28 15:26:00) [15]create procedure vybor (ipKRIT char(20))
returns (Phone CHAR(7), Name CHAR(30), Street CHAR(37))
AS
Begin
for select phone, name, street
from kvartir where name like ipKRIT
into :Phone , :Name, :Street
do
suspend;
end
Тебе надо написать " like :ipKRI"
ругается на то, что нет двоеточия.
Я использую QuickDesk ( http://www.ems-hitech.com/ibmanager/index.phtml), правда создатели
сделали новый продукт IBManager.
Но QuickDesk пока, мне кажется, работает лучше.
Саня
ЗЫ. Если хочешь могу по мылу прислать QuickDesk.
Pashok (2003-01-28 15:21:00) [16]Э нет. Не даждетесь, - сказал Абрам Биллу Гейтсу .....
Alexandr (2003-01-28 15:12:00) [17]слушай, пашок, бросай ты программирование...
Ей богу
Pashok (2003-01-28 14:57:00) [18]Распишу тогда сначала, может мне тоже поможет понять что я хочу.
И так:
Это будет телефонный справочник.
1. Хочу сделать хранимую процедуру в ИБ 6.
2. В базе есть одна таблица (kvartir), в которой с тремя столбцами (phone,name,street- все строковые).
3. Есть индекс по полю Name.
4. Есть клиентское приложение на стадии разработки ...
Из этого приложения я буду работать с БД через Database, IBQuery, IBStoredProc, IBTransaction.
5. .......
.................
.................
10.
Не получается загнать ХП .
запускаю консоль ИБ.
захожу в interactive SQL.
набираю :
SET TERM ^ ;
create procedure vybor (ipKRIT char(20))
returns (Phone CHAR(7), Name CHAR(30), Street CHAR(37))
AS
Begin
for select phone, name, street
from kvartir where name like ipKRIT
into :Phone , :Name, :Street
do
suspend;
end
^
SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;
и выходит сообщение:
Dynamic SQL Error
SQL error code = -206
Column unknown
IPKRIT
Statement: create procedure vybor (ipKRIT char(20))
returns (Phone CHAR(7), Name CHAR(30), Street CHAR(37))
AS
Begin
for select phone, name, street
from kvartir where name like ipKRIT
into :Phone , :Name, :Street
do
suspend;
end
...
что столбец не найден.
Ладно.
ставлю двоеточие (:ipKRIT char(20))
Мессага
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, char 24
:
Statement: create procedure vybor (:ipKRIT char(20))
returns ......................
..........
и ничего не получается, точнее получается но нето (нега тучей небо кроет .... пи.ец полнейший) интерпретация посетителей прискорбного заведения .....
Наталия (2003-01-28 13:56:00) [19]А двоеточие перед этим параметром не пробовал ставить?
Alexandr (2003-01-28 13:56:00) [20]скорее второе :)