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

Вниз

Где ошибка в ХП   Найти похожие ветки 

 
Pashok ©   (2003-01-28 10:47) [0]

Вроде все при на мой взгляд верно, но выполняться не хочет.

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 запихать в базу хранимую процедуру ?


 
Big_Rom ©   (2003-01-28 10:50) [1]

так а что говорит
for select * from kvartir where name like ipKRIT
into :opPhone , :opName, :opStreet
ты выбираешь все поля а пихаешь в три переменные
помоемы гдето тут



 
Pashok ©   (2003-01-28 11:00) [2]

а в базе три столбца !
только они называются иначе phone name и street ....
а дает ошибку в
> into :opPhone , :opName, :opStreet



 
Pashok ©   (2003-01-28 11:03) [3]

Вот какая ошибка:
Dynamic SQL Error
SQL error code = -104
Unexpected end of command
Statement: create procedure vybor (ipKRIT char(20))
returns (Phone CHAR(7), Name CHAR(30), Street CHAR(37))
AS
Begin
for select * from kvartir where name like ipKRIT into :Phone , :Name, :Street
do suspend


вот процедура:


create procedure vybor (ipKRIT char(20))
returns (Phone CHAR(7), Name CHAR(30), Street CHAR(37))
AS
Begin
for select * from kvartir where name like ipKRIT into :Phone , :Name, :Street
do suspend;
end


 
Alexandr ©   (2003-01-28 11:03) [4]

1) а что звездочку на нормальные названия заменить религия не позволяет?
2) Чем работаешь?


 
Pashok ©   (2003-01-28 11:06) [5]

из консоли ИБ 6
под звездой я подразумеваю три столбца таблицы(их там только 3).
пробовал расписать имена столбцов. Результат тот же.


 
Big_Rom ©   (2003-01-28 11:10) [6]

DO
BEGIN
SUSPEND;
END
END

вот так должно быть


 
Pashok ©   (2003-01-28 11:13) [7]

а в книге В.Гофмана, А.Хомоненко "Работа с базами данных в Делфи"
писано иначе как уменя!


 
Pashok ©   (2003-01-28 11:15) [8]

и так не работает все равно таже ошибка, говорит что не найден конец. Застревает перед END-ами....
чет я недопонимаю чё за лажа ?


 
Pashok ©   (2003-01-28 11:23) [9]

??? я в шоке...


 
Big_Rom ©   (2003-01-28 11:28) [10]

скачай себе ibexpert и немучайся


 
Pashok ©   (2003-01-28 11:30) [11]


> Big_Rom © (28.01.03 11:28)
> скачай себе ibexpert и немучайся

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


 
Big_Rom ©   (2003-01-28 11:39) [12]

www.ibexpert.com

Unexpected end of command :))



 
Наталия ©   (2003-01-28 12:25) [13]

В IBConsole, вроде бы, надо SET TERM... использовать. Если я правильно помню.


 
Big_Rom ©   (2003-01-28 12:37) [14]

надо но лучьше ibexperta нету :))


 
Pashok ©   (2003-01-28 12:55) [15]

и чё с ним делать ?


 
Pashok ©   (2003-01-28 13:04) [16]

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
Шиза ты снова посетила меня, О Шиза ...!!!!


 
Big_Rom ©   (2003-01-28 13:13) [17]

что скем и зачем ?

Головная боль шизофрения :))


 
Наталия ©   (2003-01-28 13:14) [18]

А так:
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;
Это если из консоли


 
Pashok ©   (2003-01-28 13:18) [19]

28.01.2003 13:07:17 Update-script saved to:
28.01.2003 13:07:17 < Compare finished! >
Target database: C:\IB\SPRAV.GDB connect... Ok.
28.01.2003 13:08:35 Extract master metadata from script: C:\IB\procedura6.sql
28.01.2003 13:08:39 Extract target database metadata: "C:\IB\SPRAV.GDB".
28.01.2003 13:08:39 Extract UDFs...
28.01.2003 13:08:39 Extract domains...
28.01.2003 13:08:39 Extract tables...
28.01.2003 13:08:39 ---KVARTIR
28.01.2003 13:08:39 Extract table fields...
28.01.2003 13:08:39 ---KVARTIR
28.01.2003 13:08:39 Extract views...
28.01.2003 13:08:39 Extract generators...
28.01.2003 13:08:39 Extract procedures...
28.01.2003 13:08:39 Extract procedure params...
28.01.2003 13:08:39 Extract triggers...
28.01.2003 13:08:39 Extract indices...
28.01.2003 13:08:39 ---REST
28.01.2003 13:08:39 Extract exceptions...
28.01.2003 13:08:39 Extract unique constraints...
28.01.2003 13:08:39 Extract primary keys...
28.01.2003 13:08:39 Extract foreign keys...
28.01.2003 13:08:39 Extract check constraints...
28.01.2003 13:08:39 Extract roles...
28.01.2003 13:08:39 Extract grants...
28.01.2003 13:08:39 Extract Dependencies...
28.01.2003 13:08:39 < Extract finished! - Compare... >
28.01.2003 13:08:39 Extract metadata:
28.01.2003 13:08:39 Extract metadata: C:\IB\SPRAV.GDB
28.01.2003 13:08:39 Show metadata:
28.01.2003 13:08:39 Show metadata: C:\IB\SPRAV.GDB
28.01.2003 13:08:39 Build Tree...
28.01.2003 13:08:39 Tree build finished.
28.01.2003 13:08:39 Show Result Script...
28.01.2003 13:08:39 Comparing: Need Update Target-DB...
Update target database...
28.01.2003 13:08:40 Connect: "C:\IB\SPRAV.GDB"
28.01.2003 13:08:40 < Exec SQL >:
28.01.2003 13:08:40 DROP INDEX "REST";
28.01.2003 13:08:40 Commit;
28.01.2003 13:08:41 Connect: "C:\IB\SPRAV.GDB"
28.01.2003 13:08:41 < Exec SQL >:
28.01.2003 13:08:41 DROP TABLE "KVARTIR";
28.01.2003 13:08:42 !!! Error: unsuccessful metadata update
28.01.2003 13:08:42 object KVARTIR is in use
28.01.2003 13:08:42 < Exec SQL >:
28.01.2003 13:08:42 CREATE PROCEDURE "VYBOR"("IPKRIT" CHAR(20))
28.01.2003 13:08:42 RETURNS("PHONE" CHAR(7),
28.01.2003 13:08:42 "NAME" CHAR(30),
28.01.2003 13:08:42 "STREET" CHAR(37))
28.01.2003 13:08:42 AS
28.01.2003 13:08:42 BEGIN EXIT; END
28.01.2003 13:08:42 Commit;
28.01.2003 13:08:42 < Exec SQL >:
28.01.2003 13:08:42 ALTER PROCEDURE "VYBOR"("IPKRIT" CHAR(20))
28.01.2003 13:08:42 RETURNS("PHONE" CHAR(7),
28.01.2003 13:08:42 "NAME" CHAR(30),
28.01.2003 13:08:42 "STREET" CHAR(37))
28.01.2003 13:08:42 AS
28.01.2003 13:08:42 Begin
28.01.2003 13:08:42 for select phone, name, street
28.01.2003 13:08:42 from kvartir where name like ipKRIT
28.01.2003 13:08:42 into :Phone , :Name, :Street
28.01.2003 13:08:42 do begin
28.01.2003 13:08:42 suspend
28.01.2003 13:08:42 !!! Error: Dynamic SQL Error
28.01.2003 13:08:42 SQL error code = -104
28.01.2003 13:08:42 Unexpected end of command
28.01.2003 13:08:42 Commit;
28.01.2003 13:08:42 <Script finished!>
Target database: C:\IB\SPRAV.GDB connect... Ok.


 
Big_Rom ©   (2003-01-28 13:20) [20]

вужас то какой :))
я тебе сказал скачай эксперта


 
Pashok ©   (2003-01-28 13:34) [21]

и че сним делать ?


 
Pashok ©   (2003-01-28 13:39) [22]

если придерживаться совета Натальи
то:
Dynamic SQL Error
SQL error code = -206
Column unknown
IPKRIT
Вообще то правильно т.к. это входящий параметр (или я не прав когда лепил запрос?)
под входящим я понимал передачу строковой величины из программы (с Edita для дальнейшего поиска в условии по Like)
Я прав или вообще Даун ?


 
Alexandr ©   (2003-01-28 13:56) [23]

скорее второе :)


 
Наталия ©   (2003-01-28 13:56) [24]

А двоеточие перед этим параметром не пробовал ставить?


 
Pashok ©   (2003-01-28 14:57) [25]

Распишу тогда сначала, может мне тоже поможет понять что я хочу.
И так:
Это будет телефонный справочник.
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 ......................
..........


и ничего не получается, точнее получается но нето (нега тучей небо кроет .... пи.ец полнейший) интерпретация посетителей прискорбного заведения .....


 
Alexandr ©   (2003-01-28 15:12) [26]

слушай, пашок, бросай ты программирование...
Ей богу


 
Pashok ©   (2003-01-28 15:21) [27]

Э нет. Не даждетесь, - сказал Абрам Биллу Гейтсу .....


 
AlexSerp   (2003-01-28 15:26) [28]

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.


 
AlexSerp   (2003-01-28 15:28) [29]

Много разных средств для работы с IB смотрел.
Лучше QuickDesk я пока не видел. Это я ТОЛЬКО про себя.

Саня


 
Pashok ©   (2003-01-28 15:30) [30]

Слава яйцам, появилась ХП.
Теперь через
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add("select * from vybor "+(df));
IBQuery1.Open;
не хочет пердаваться в процедуру параметр и правильно делает.
все конечно передается строковым зачением, а именно вместо параметра присутствует DF.
какой компонент позволят передать "select * from vybor " и далее параметр (значение его) ?


 
Pashok ©   (2003-01-28 15:37) [31]

Обожди сам ща гляну ....
вроде не дебил с локальными легко а с серверными БД напряг месяц как начал знакомство, 3 раз лезу в ИБ базу
за помощь спасибо.
но это не последняя подсказка ......
такшто держитесь ;-)


 
Delirium^.Tremens ©   (2003-01-28 15:39) [32]


> за помощь спасибо.
> но это не последняя подсказка ......
> такшто держитесь ;-)

Ну, вот из за тебя кеды промокли... :-)


 
AlexSerp   (2003-01-28 15:42) [33]

Слава яйцам, появилась ХП.
Теперь через
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) +")");

И будет тебе щасье.

Саня


 
Wolf ©   (2003-01-28 15:59) [34]

Ну вы блин даете... (это про поиск : )

Кстати, а чего не засунуть в дизайнере
IBQuery1.SQL следующее select * from vybor(:df)
А потом работать через параметры?


 
AlexSerp   (2003-01-28 16:03) [35]

2Wolf ©
А мне всегда интересно было, зачем работать через параметры, когда во время формирования запроса значение УЖЕ известно. Его проще подставить сразу.
А вот если в цикле потом работать, то твой пример Wolf © "в самую дырочку".
Просто из отрывка кода не понятно, в цикле это будет ии нет.

Саня


 
Wolf ©   (2003-01-28 16:30) [36]

А если в цикле, то перед циклом желательно выполнить Prepare.


 
AlexSerp ©   (2003-01-28 16:36) [37]

А если в цикле, то перед циклом желательно выполнить Prepare.
Ну об этом и собаки не брешут.
Плюс после цикла UnPrepare. ;-)

Саня


 
Наталия ©   (2003-01-29 06:06) [38]

AlexSerp (28.01.03 16:03)
>А мне всегда интересно было, зачем работать через параметры, когда во время формирования запроса значение УЖЕ известно. Его проще подставить сразу.

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


 
AlexSerp ©   (2003-01-29 08:56) [39]

Наталия, а так ли это накладно - вызов функции преобразлвания в строку? ;-)

Саня


 
Наталия ©   (2003-01-29 08:59) [40]

И помнить при этом формат представления дат,чисел и т.п. на каждом типе сервера?



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

Текущий архив: 2003.02.13;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.012 c
1-38274
Тип
2003-02-05 12:40
2003.02.13
Tree.AddChildObject имеет параметр Ptr, как освободить память?


7-38587
Андрей Ваганов
2002-12-10 15:40
2003.02.13
Как убрать прогу с таскбара?


3-38145
Olivka
2003-01-27 21:03
2003.02.13
Гетерогенные запросы в IB


14-38501
Marsello
2003-01-23 18:36
2003.02.13
Кто нибудь работал с InterBase Server???????????


1-38246
Alarm
2003-02-05 11:37
2003.02.13
Редактирование отчета QReport-а или Export из него