Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-38364
Alexandr3
2003-02-04 07:36
2003.02.13
Помогите пожалуйста показать окно


14-38466
Юрий
2003-01-30 18:59
2003.02.13
Взлом компонентов


1-38352
Son!K
2003-02-03 21:27
2003.02.13
Copy


7-38575
Chrome2002
2002-12-09 15:37
2003.02.13
NTFS permissions


14-38499
Evgeny
2003-01-26 10:58
2003.02.13
функции в DLL





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