Форум: "Базы";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизСоздаю процедуру, FB говорит - parameter mismatch. Найти похожие ветки
← →
Dimedrol © (2004-03-24 12:39) [0]Коллеги - сабж.
Вот моя несложная процедура :
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.
← →
Term © (2004-03-24 12:54) [1]
> select first 1 id from MY_GOOGLE where ONEWORD=:ONEWORD
> into :MYID;
может должно быть
for select
← →
Dimedrol © (2004-03-24 13:09) [2]Вообще-то у мня там стоит "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 select first 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
← →
Соловьев © (2004-03-24 13:17) [3]Ошибка выдается при выполнении ХП?
← →
Соловьев © (2004-03-24 13:21) [4]IF (:MYID IS NULL) THEN
двое точие не надо
← →
Dimedrol © (2004-03-24 13:26) [5]Нет.
Ошибка при СОЗДАНИИ прцедуры.
Работает они потом ВРОДЕБЫ(!) нормально...
Но такого ведь быть не должно!
двоеточие убрал.
тоже самое... :-(
← →
Johnmen © (2004-03-24 13:32) [6]>Dimedrol ©
Везде ли совпадают типы ? integer и varchar(64) ?
← →
Соловьев © (2004-03-24 13:33) [7]ONEWORD VARCHAR (64) - желательно COLLATE указать
← →
Соловьев © (2004-03-24 13:34) [8]вернее CHARACTER SET
← →
Dimedrol © (2004-03-24 14:59) [9]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) [10]даже и так -
CREATE PROCEDURE INS_GOO (
INNID INTEGER)
RETURNS (
ID INTEGER)
AS
BEGIN
ID=0;
SUSPEND;
END
888888-\
← →
Johnmen © (2004-03-24 15:09) [11]Я давно подозревал, что EMS IB/FB Manager имеет неожиданные багофичи...
:)
← →
Term © (2004-03-24 15:12) [12]а ошибка уже при вызове процедуры?
← →
Dimedrol © (2004-03-24 16:08) [13]2 Johnmen ©
не исключено... ;-)
2Term ©
НЕТ.
ВЫЗЫВАЕТСЯ процедура нормально. Работает ОК.
Эта картина при СОЗДАНИИ!
Просто, я заподозрил неладное и забил тревогу..
← →
Соловьев © (2004-03-24 16:10) [14]Давно пора перейти на новую версию IBExpert - http://www.ibexpert.com/rus/ibe_sfx.exe
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.048 c