![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создаю процедуру, FB говорит - parameter mismatch. [D6, IB6.x, Firebird]
Dimedrol © (2004-03-24 12:39:00)Коллеги - сабж.
Вот моя несложная процедура :
CREATE PROCEDURE INS_GOO (
INNID INTEGER,
DATATYPE INTEGER,
ONEWORD VARCHAR (64))
RETURNS (
ID INTEGER)
AS
DECLARE VARIABLE GEN INTEGER;
DECLARE VARIABLE MYID INTEGER;
DECLARE VARIABLE INN INTEGER;
BEGIN
select first 1 id from MY_GOOGLE where ONEWORD=:ONEWORD into :MYID;
IF (:MYID IS NULL) THEN
BEGIN
insert into my_google (ONEWORD, DATATYPE) values (:ONEWORD, :DATATYPE);
GEN=GEN_ID(GOO1, 0);
insert into MY_GOOIDS (INNID, WRDID) values (:INNID, :GEN);
ID=GEN;
SUSPEND;
END
else
BEGIN
insert into MY_GOOIDS (INNID, WRDID) values (:INNID, :MYID);
ID=MYID;
SUSPEND;
END
END
Выполняю код.
Процедура создается(!), но параллельно мне выдается ошибка
- parameter mismatch for procedure INS_GOO
В качестве клиента использую EMS IB/FB Manager.
Соловьев (2004-03-24 16:10:00) [1]Давно пора перейти на новую версию IBExpert - http://www.ibexpert.com/rus/ibe_sfx.exe
Dimedrol (2004-03-24 16:08:00) [2]2 Johnmen ©
не исключено... ;-)
2Term ©
НЕТ.
ВЫЗЫВАЕТСЯ процедура нормально. Работает ОК.
Эта картина при СОЗДАНИИ!
Просто, я заподозрил неладное и забил тревогу..
Term (2004-03-24 15:12:00) [3]а ошибка уже при вызове процедуры?
Johnmen (2004-03-24 15:09:00) [4]Я давно подозревал, что EMS IB/FB Manager имеет неожиданные багофичи...
:)
Dimedrol (2004-03-24 14:59:00) [5]2 Соловьев ©
ONEWORD VARCHAR(255) CHARACTER SET NONE
та же картина
2 Johnmen ©
Что значит "совпадают" ?
Эта процедура другими не используется
и самам другие не вызывает...
даже вот так делаю...
CREATE PROCEDURE INS_GOO
(
INNID INTEGER,
DATATYPE INTEGER,
ONEWORD VARCHAR (255)
)
RETURNS
(
ID INTEGER
)
AS
BEGIN
ID=0;
SUSPEND;
END
Даже ТОГДА(!) говорит... 888-\
Dimedrol (2004-03-24 14:59:00) [6]даже и так -
CREATE PROCEDURE INS_GOO (
INNID INTEGER)
RETURNS (
ID INTEGER)
AS
BEGIN
ID=0;
SUSPEND;
END
888888-\
Соловьев (2004-03-24 13:34:00) [7]вернее CHARACTER SET
Соловьев (2004-03-24 13:33:00) [8]ONEWORD VARCHAR (64) - желательно COLLATE указать
Johnmen (2004-03-24 13:32:00) [9]>Dimedrol ©
Везде ли совпадают типы ? integer и varchar(64) ?
Dimedrol (2004-03-24 13:26:00) [10]Нет.
Ошибка при СОЗДАНИИ прцедуры.
Работает они потом ВРОДЕБЫ(!) нормально...
Но такого ведь быть не должно!
двоеточие убрал.
тоже самое... :-(
Соловьев (2004-03-24 13:21:00) [11]IF (:MYID IS NULL) THEN
двое точие не надо
Соловьев (2004-03-24 13:17:00) [12]Ошибка выдается при выполнении ХП?
Dimedrol (2004-03-24 13:09:00) [13]Вообще-то у мня там стоит " FIRST 1"
ну да ладно...
Сделал FOR select
то же самое :-(
CREATE PROCEDURE INS_GOO (
INNID INTEGER,
DATATYPE INTEGER,
ONEWORD VARCHAR (64))
RETURNS (
ID INTEGER)
AS
DECLARE VARIABLE GEN INTEGER;
DECLARE VARIABLE MYID INTEGER;
DECLARE VARIABLE INN INTEGER;
BEGIN
FOR selectfirst 1 id from MY_GOOGLE where ONEWORD=:ONEWORD into :MYID
DO
BEGIN
IF (:MYID IS NULL) THEN
BEGIN
insert into my_google (ONEWORD, DATATYPE) values (:ONEWORD, :DATATYPE);
GEN=GEN_ID(GOO1, 0);
insert into MY_GOOIDS (INNID, WRDID) values (:INNID, :GEN);
ID=GEN;
SUSPEND;
END
else
BEGIN
insert into MY_GOOIDS (INNID, WRDID) values (:INNID, :MYID);
ID=MYID;
SUSPEND;
END
END
END
Term (2004-03-24 12:54:00) [14]
> select first 1 id from MY_GOOGLE where ONEWORD=:ONEWORD
> into :MYID;
может должно быть
for select