Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Процедура в InterBase   Найти похожие ветки 

 
Назаров Евгений   (2004-04-13 13:21) [0]

Подскажите, почему такой запрос в процедуре компилируется нормально
select name from cat_parse where (id in (2,3))  into :n

а такой ругается

select name from A where (id in (:vp1,:vp2))  into :n
здесь vp1 и vp2 переменные типа integer,  id тоже integer


 
Назаров Евгений   (2004-04-13 13:21) [0]

Подскажите, почему такой запрос в процедуре компилируется нормально
select name from cat_parse where (id in (2,3))  into :n

а такой ругается

select name from A where (id in (:vp1,:vp2))  into :n
здесь vp1 и vp2 переменные типа integer,  id тоже integer


 
Курдль ©   (2004-04-13 13:22) [1]

Как декларированы vp1 и vp2?


 
Курдль ©   (2004-04-13 13:22) [1]

Как декларированы vp1 и vp2?


 
Johnmen ©   (2004-04-13 13:25) [2]

>ругается

Матом ?


 
Johnmen ©   (2004-04-13 13:25) [2]

>ругается

Матом ?


 
Назаров Евгений   (2004-04-13 13:31) [3]

DECLARE VARIABLE VP1 INTEGER;
DECLARE VARIABLE VP2 INTEGER;


 
Назаров Евгений   (2004-04-13 13:31) [3]

DECLARE VARIABLE VP1 INTEGER;
DECLARE VARIABLE VP2 INTEGER;


 
Назаров Евгений   (2004-04-13 13:32) [4]

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 31, char 46.
:.


 
Назаров Евгений   (2004-04-13 13:32) [4]

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 31, char 46.
:.


 
stud ©   (2004-04-13 13:33) [5]

так ругается когда? при компиляции или при выполнении?


 
stud ©   (2004-04-13 13:33) [5]

так ругается когда? при компиляции или при выполнении?


 
Vlad ©   (2004-04-13 13:36) [6]

Могу ошибаться, но по-моему двоеточия тут не нужны:

> (:vp1,:vp2)


 
Vlad ©   (2004-04-13 13:36) [6]

Могу ошибаться, но по-моему двоеточия тут не нужны:

> (:vp1,:vp2)


 
stud ©   (2004-04-13 13:36) [7]

вообще-то нормально и компилируется и выполняется.
наверное вы что-то недоговариваете?


 
stud ©   (2004-04-13 13:36) [7]

вообще-то нормально и компилируется и выполняется.
наверное вы что-то недоговариваете?


 
Johnmen ©   (2004-04-13 13:36) [8]

Так убери : в параметрах, которые в in
:)


 
Johnmen ©   (2004-04-13 13:36) [8]

Так убери : в параметрах, которые в in
:)


 
Назаров Евгений   (2004-04-13 13:41) [9]

убираю, и на этапе компиляции говорит, что
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 31, char 46.
vp1.


 
Назаров Евгений   (2004-04-13 13:41) [9]

убираю, и на этапе компиляции говорит, что
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 31, char 46.
vp1.


 
Соловьев ©   (2004-04-13 13:45) [10]


> Token unknown - line 31, char 46.

Телепатриуем - ошибка не в

> select name from A where (id in (:vp1,:vp2))  into :n


 
Соловьев ©   (2004-04-13 13:45) [10]


> Token unknown - line 31, char 46.

Телепатриуем - ошибка не в

> select name from A where (id in (:vp1,:vp2))  into :n


 
Соловьев ©   (2004-04-13 13:48) [11]

Вот набросал. работает. БД под ФБ 1.5

CREATE PROCEDURE GET_TEMP
RETURNS (
   NAME VARCHAR(54) CHARACTER SET WIN1251)
AS
DECLARE VARIABLE V1 INTEGER;
DECLARE VARIABLE V2 INTEGER;
begin
   V1 = 1;
   V2 = 2;
 FOR
     SELECT A.ZONA
     FROM ABROAD A
     WHERE A.KZON IN (:V1, :V2)
     INTO :NAME
 do
 suspend;
end


 
Соловьев ©   (2004-04-13 13:48) [11]

Вот набросал. работает. БД под ФБ 1.5

CREATE PROCEDURE GET_TEMP
RETURNS (
   NAME VARCHAR(54) CHARACTER SET WIN1251)
AS
DECLARE VARIABLE V1 INTEGER;
DECLARE VARIABLE V2 INTEGER;
begin
   V1 = 1;
   V2 = 2;
 FOR
     SELECT A.ZONA
     FROM ABROAD A
     WHERE A.KZON IN (:V1, :V2)
     INTO :NAME
 do
 suspend;
end


 
serge35   (2004-04-13 13:49) [12]

Найди 31 строку а в ней 46 символ. Что там написано?


 
serge35   (2004-04-13 13:49) [12]

Найди 31 строку а в ней 46 символ. Что там написано?


 
Назаров Евгений   (2004-04-13 13:54) [13]

а у меня ругается (IBase 6.5)
declare variable vp1 integer;
declare variable vp2 integer;
declare variable n varchar(255);
begin
vp1=1;
vp2=2;
for
  select name from cat_parse
  where id in (:vp1,:vp2)
  into :n
do
  name=name+n;//выходной параметр
 suspend;
end


 
Назаров Евгений   (2004-04-13 13:54) [13]

а у меня ругается (IBase 6.5)
declare variable vp1 integer;
declare variable vp2 integer;
declare variable n varchar(255);
begin
vp1=1;
vp2=2;
for
  select name from cat_parse
  where id in (:vp1,:vp2)
  into :n
do
  name=name+n;//выходной параметр
 suspend;
end


 
Соловьев ©   (2004-04-13 14:07) [14]


> Назаров Евгений   (13.04.04 13:54) [13]

В чем создаешь?


 
Соловьев ©   (2004-04-13 14:07) [14]


> Назаров Евгений   (13.04.04 13:54) [13]

В чем создаешь?


 
Johnmen ©   (2004-04-13 14:07) [15]

Смажь всё-таки лыжи и разберись с name


 
Johnmen ©   (2004-04-13 14:07) [15]

Смажь всё-таки лыжи и разберись с name


 
Назаров Евгений   (2004-04-13 14:09) [16]

в это строке
where id in (:vp1,:vp2)
курсор стоит в конце слова in


 
Назаров Евгений   (2004-04-13 14:09) [16]

в это строке
where id in (:vp1,:vp2)
курсор стоит в конце слова in


 
serge35   (2004-04-13 14:17) [17]

Проблема в объявлении переменных.
попробуй сразу после degin проинициализировать переменные как написано в примере Соловьева.


 
serge35   (2004-04-13 14:17) [17]

Проблема в объявлении переменных.
попробуй сразу после degin проинициализировать переменные как написано в примере Соловьева.


 
Назаров Евгений   (2004-04-13 14:52) [18]

>sergey35  -  а разве после begin можно ??
я уже даже новую процедуру создал, всё заново написал как в примере Соловьева, не работает так же !


 
Назаров Евгений   (2004-04-13 14:52) [18]

>sergey35  -  а разве после begin можно ??
я уже даже новую процедуру создал, всё заново написал как в примере Соловьева, не работает так же !


 
Digitman ©   (2004-04-13 15:05) [19]

оператор конкатенации строк - ||


 
Digitman ©   (2004-04-13 15:05) [19]

оператор конкатенации строк - ||


 
serge35   (2004-04-13 15:07) [20]

После begin можно практически все.
Нужен полный текст процедуры.


 
serge35   (2004-04-13 15:07) [20]

После begin можно практически все.
Нужен полный текст процедуры.


 
Курдль ©   (2004-04-13 15:08) [21]

НЕ ПОНЯЛ!
К сожалению, у меня IB не установлен и проверить нечем...
Но разве если переменная задекларирована, как "vp1", то и прописывать ее надо, как "vp1" а не ":vp1"? Это ведь не параметр процедуры!


 
Курдль ©   (2004-04-13 15:08) [21]

НЕ ПОНЯЛ!
К сожалению, у меня IB не установлен и проверить нечем...
Но разве если переменная задекларирована, как "vp1", то и прописывать ее надо, как "vp1" а не ":vp1"? Это ведь не параметр процедуры!


 
serge35   (2004-04-13 15:18) [22]

Про двоеточия сказали еще 2 часа назад.


 
serge35   (2004-04-13 15:18) [22]

Про двоеточия сказали еще 2 часа назад.


 
Курдль ©   (2004-04-13 15:21) [23]


> Про двоеточия сказали еще 2 часа назад.

Не заметил :)  Однако, народ же упорно приводит рабочие примеры
с двоеточиями!


 
Курдль ©   (2004-04-13 15:21) [23]


> Про двоеточия сказали еще 2 часа назад.

Не заметил :)  Однако, народ же упорно приводит рабочие примеры
с двоеточиями!


 
Соловьев ©   (2004-04-13 15:38) [24]


> WHERE A.KZON IN (:V1, :V2)

: - нужно, так как его не написать - то это будет поле таблицы

> Назаров Евгений   (13.04.04 14:52) [18]

Проблема при создании? Еще раз спрашиваю - в чем ты это делаешь?
> name=name+n;//выходной параметр

См.> Digitman ©   (13.04.04 15:05) [19]


 
Соловьев ©   (2004-04-13 15:38) [24]


> WHERE A.KZON IN (:V1, :V2)

: - нужно, так как его не написать - то это будет поле таблицы

> Назаров Евгений   (13.04.04 14:52) [18]

Проблема при создании? Еще раз спрашиваю - в чем ты это делаешь?
> name=name+n;//выходной параметр

См.> Digitman ©   (13.04.04 15:05) [19]


 
Назаров Евгений   (2004-04-13 15:57) [25]

делаю в IB Expert
а строку > name=name+n;//выходной параметр
я вообще-то закоментировал, тоже не помогло !


 
Назаров Евгений   (2004-04-13 15:57) [25]

делаю в IB Expert
а строку > name=name+n;//выходной параметр
я вообще-то закоментировал, тоже не помогло !


 
Соловьев ©   (2004-04-13 15:59) [26]


> Назаров Евгений   (13.04.04 15:57) [25]

мож глюк ИБ 6.5 - перейди на ФБ 1.5


 
Соловьев ©   (2004-04-13 15:59) [26]


> Назаров Евгений   (13.04.04 15:57) [25]

мож глюк ИБ 6.5 - перейди на ФБ 1.5


 
Назаров Евгений   (2004-04-13 16:09) [27]

а в программе разве ничего править не надо будет ?
тяжковато будет, прогу уже больше года пишу, (а с БД не очень дружу), сейчас ввожу новшества, пишу каталог железа для компьютерной фирмы...
на сколько помню, пытался перейти на FB, первый встретившийся глюк - IBQuery.ExecSQL; - говорит нет такого , короче долго заморачиваться не стал..


 
Назаров Евгений   (2004-04-13 16:09) [27]

а в программе разве ничего править не надо будет ?
тяжковато будет, прогу уже больше года пишу, (а с БД не очень дружу), сейчас ввожу новшества, пишу каталог железа для компьютерной фирмы...
на сколько помню, пытался перейти на FB, первый встретившийся глюк - IBQuery.ExecSQL; - говорит нет такого , короче долго заморачиваться не стал..


 
Соловьев ©   (2004-04-13 16:11) [28]


> на сколько помню, пытался перейти на FB, первый встретившийся
> глюк - IBQuery.ExecSQL;

мда... точно не дружишь :)
это никак не связано с СУБД - это к компонентам доступа.
Но то что-то ты не договариваешь...
Executes the SQL statement for the query.


procedure ExecSQL;

Description

Call ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE).

Note: For SELECT statements, call Open instead of ExecSQL.

ExecSQL prepares the statement in SQL property for execution if it has not already been prepared. To speed performance, an application should ordinarily call Prepare before calling ExecSQL for the first time.


 
Соловьев ©   (2004-04-13 16:11) [28]


> на сколько помню, пытался перейти на FB, первый встретившийся
> глюк - IBQuery.ExecSQL;

мда... точно не дружишь :)
это никак не связано с СУБД - это к компонентам доступа.
Но то что-то ты не договариваешь...
Executes the SQL statement for the query.


procedure ExecSQL;

Description

Call ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE).

Note: For SELECT statements, call Open instead of ExecSQL.

ExecSQL prepares the statement in SQL property for execution if it has not already been prepared. To speed performance, an application should ordinarily call Prepare before calling ExecSQL for the first time.


 
serge35   (2004-04-13 16:12) [29]

Без полного текста процедуры дальнейшее перепирательство безсмысленно.


 
serge35   (2004-04-13 16:12) [29]

Без полного текста процедуры дальнейшее перепирательство безсмысленно.


 
Соловьев ©   (2004-04-13 16:13) [30]


> а в программе разве ничего править не надо будет ?

думаю ничего - разве что БД прийдется восстановить из резервной копии. Но лучше про это почитай на www.ibase.ru


 
Соловьев ©   (2004-04-13 16:13) [30]


> а в программе разве ничего править не надо будет ?

думаю ничего - разве что БД прийдется восстановить из резервной копии. Но лучше про это почитай на www.ibase.ru


 
stud ©   (2004-04-13 16:42) [31]

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


 
stud ©   (2004-04-13 16:42) [31]

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


 
Назаров Евгений   (2004-04-13 16:51) [32]

>Stud , база не BDE, а InterBase, хотел перейти на FB, если надумаю, почитаю, и сделаю - www.ibase.ru - это руль :)


 
Назаров Евгений   (2004-04-13 16:51) [32]

>Stud , база не BDE, а InterBase, хотел перейти на FB, если надумаю, почитаю, и сделаю - www.ibase.ru - это руль :)


 
Соловьев ©   (2004-04-13 16:58) [33]


> база не BDE, а InterBase

БДЕ - это набор длл для доступа к данным. Так что если используешь TDatabase, TQuery и т.п. То желательно перейти на InterBase Express(IBX)


 
Соловьев ©   (2004-04-13 16:58) [33]


> база не BDE, а InterBase

БДЕ - это набор длл для доступа к данным. Так что если используешь TDatabase, TQuery и т.п. То желательно перейти на InterBase Express(IBX)



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

Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.6 MB
Время: 0.032 c
7-1080148513
beard
2004-03-24 20:15
2004.05.09
Мультизагрузка в Windows XP


7-1079534916
Arm79
2004-03-17 17:48
2004.05.09
Создание форм в потоках


4-1079942658
ALS
2004-03-22 11:04
2004.05.09
Назначить кнопке курсор


1-1082370450
s_pantera
2004-04-19 14:27
2004.05.09
Как организовать цикл с датой


7-1080071278
cyborg
2004-03-23 22:47
2004.05.09
Активация/Деактивация окна





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