Форум: "Базы";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
ВнизГде ошибка в ХП Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.01 c