powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Интересный вопрос.... про процедуры..
25 сообщений из 38, страница 1 из 2
Интересный вопрос.... про процедуры..
    #32175703
Balast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня возник такой вопрос...
Необходимо создать процедуру... я ее создал... в ней содержится как входящие параметры... так и возвращающие данные.... для реализации из клиентской программы.... вызываю Query (объектом)
С параметрами работаю так же как и с параметрами в объекте Storedproc... Но невыходит... генерируется ошибка... может кто то знает в чем дело?
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32175705
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык что за ошибка-то?
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32175884
Voha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И код хорошобы посмотреть, конечно ели он не секретный
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32176849
Balast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код процедуры сервера....
CREATE PROCEDURE TEST_STAVKI_ARC (
TIP VARCHAR(10),
MES1 SMALLINT,
GOD1 SMALLINT,
MES2 SMALLINT,
GOD2 SMALLINT
) RETURNS (
NPP INTEGER,
MES SMALLINT,
GOD SMALLINT,
NOMST SMALLINT,
TIP_ VARCHAR(10),
NAZV VARCHAR(50),
GOS_STAVKA FLOAT,
IZLISHKI FLOAT
) AS
BEGIN
FOR SELECT STAVKI_ARC_NPP, STAVKI_ARC_MES, STAVKI_ARC_GOD, STAVKI_ARC_NOMST, STAVKI_ARC_TIP,
STAVKI_ARC_NAZV, STAVKI_ARC_GOS_STAVKA, STAVKI_ARC_IZLISHKI FROM T_STAVKI_ARC
WHERE STAVKI_ARC_TIP=:TIP
INTO :NPP, :MES, :GOD, :NOMST, :TIP_, :NAZV, :GOS_STAVKA, :IZLISHKI
DO
BEGIN
IF (((MES1<=MES)AND(GOD1<=GOD))OR(GOD-GOD1>0)) THEN
BEGIN
IF (((MES2>=MES)AND(GOD2>=GOD))OR(GOD2-GOD>0)) THEN
SUSPEND;
END
END
END

..............
Код клиента.......
...
form1.IBQuery3.sql.Clear;
form1.IBQuery3.sql.add('SELECT * FROM TEST_STAVKI_ARC');
form1.IBQuery3.Params.CreateParam(ftString,'TIP',ptInput){.AsString:=stavka};
form1.IBQuery3.params.CreateParam(ftInteger,'MES1',ptInput){.Asinteger:=combobox1.itemindex+1};
form1.IBQuery3.params.CreateParam(ftInteger,'GOD1',ptInput){.Asinteger:=strtoint(edit4.text)};
form1.IBQuery3.params.CreateParam(ftInteger,'MES2',ptInput){.Asinteger:=combobox2.itemindex+1};
form1.IBQuery3.params.CreateParam(ftInteger,'GOD2',ptInput){.Asinteger:=strtoint(edit5.text)};
form1.IBQuery3.execSQL;
...
Ошибка такого рода:
Dinamic SQL Error Parameter mismatch of procedure TEST_STAVKI_ARC.

Собственно вроде все... Прошу помощи.. т.к. сам уже потчи отчаялся =)
А отказываться от возвращения данных или входящих данных... Конечно же можно... и обходной путь уже давно найден... Но уж слишком велико желание сделать все по человечески... Спасибо за помощь.... (заранее благодарен)
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32176853
Balast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл дабавить...
В компоненте Query параметры обнуляю.... поэтому не в этом дело =)
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32176912
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
form1.IBQuery3.sql.Clear; 
form1.IBQuery3.sql.add('SELECT * FROM TEST_STAVKI_ARC(:p0, :p1, :p2, :p3, :p4)'); 
form1.IBQuery3.Params[ 0 ].AsString:=stavka; 
form1.IBQuery3.params[ 1 ].Asinteger:=combobox1.itemindex+ 1 ; 
form1.IBQuery3.params[ 2 ].Asinteger:=strtoint(edit4.text); 
form1.IBQuery3.params.[ 3 ].Asinteger:=combobox2.itemindex+ 1 ; 
form1.IBQuery3.params.[ 4 ].Asinteger:=strtoint(edit5.text); 
form1.IBQuery3.execSQL; 

Может как-то так?
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32177866
Balast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо!!!
Отдельное спасибо Alex_k, бываюж же еще добрые люди =)
Судя по всему буду теперь тут чаще... может и я кому полезен буду =)
Странно что я сам не понял в чем дело =)
еще разок спасибо =)
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32177870
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ненужно мне отдельного спасиба :-)
лучше ходи сюда почащще, да помогай людям по мере возможности :-)
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32444667
sh'ors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу сразу прощения за поднимаемый вновь вопрос.
у меня такая трабла.
на сервере ХП
CREATE PROCEDURE "sales" (
"in" VARCHAR(40))
RETURNS (
OUT_D VARCHAR(40),
OUT_ED INTEGER,
OUT_PRICE BIGINT)
AS
begin
select "DENOMINATION","ED","PRICE" from "GOODS"
where "DENOMINATION" =: "in"
into : "OUT_D","OUT_ED","OUT_PRICE";
end

В клиенте.
ibquery1.SQL.Clear;
ibquery1.SQL.add('select "DENOMINATION","ED","PRICE" FROM "sales" (:"in")');
//S:=ibquery1.SQL.Text;
IBQuery1.Params.CreateParam(ftString,'in',ptInput);
IBQuery1.Parambyname('in').AsString:='Майка';
IBQuery1.ExecSQL;


Delph'я выдает ошибку code -206 Column in unknown.
причем я так понимаю что FB не видит параметр, а требует Column.
В чем трабла, вроде все же должно работать.? Подскажите.плз.
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32444685
Andrew Kruchinin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мда. А сообщения выше не читаем? Там же есть пример. Доступ к параметру по НОМЕРУ. Смотри сообщение от alex_k-а. Причем там именно с параметрами входными.

А вообще, если я правлиьно помню, рекомендуется пользоватся компонентами типа TIBSQL, а уж совсем не TIBQuery. Но принцип там точно такой же.
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32444689
sh'ors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С номером пробывал уже, такая же фигня?
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32444699
Andrew Kruchinin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторС номером пробывал уже, такая же фигня?

Поменяй IBQuery на IBSQL для начала и попробуй с номером.
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32444701
Andrew Kruchinin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Упс, вдогонку- а кто ошибку дает то, Delphi или Firebird, проверь сначала. Может у тебя проблема не в обращении к ХП, а именно в самой ХП, т.е. такой колонки нету. Выполни запрос типа select * from salec('text') и результат глянь.
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32444761
sh'ors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделал
select * from sales(text)
text-это string {имя товара-майка}

ошибка EIBinterbaseerror -206 column text unknown.

XП в эксперте работает. выдает заданные значения, а с клиента не могу.
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32444792
Andrew Kruchinin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну ды. проблема то в скрипте тогда, а не в компонентах. Параметр тут совершенно не при чем.

Диалект какой? Да и вроде у IBE есть такой параметр как "Приводить наименования обьектов в верхний регистр". Хотя сомнительно, т.к. в ковычках вроде бы, но я вообще никогда ковычками не пользуюсь, лучше уж поиметь регистронезависимые поля, чем мучатся потом с похожими проблемами если вдруг что-то не так напишешь.

Попробуй выполнить простой селект который в процедуре стоит из приложения. Пройдет или нет?
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32444805
sh'ors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как поиметь регистронезависимые поля?
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32444964
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, хватит бреда про обращение к параметрам по номеру, про CreateParam и прочее !

>Автору

Параметр :in - это свойство объекта IBQuery1 никакого !!! отношения к ХП не имеющего ! А значит
ibquery1.SQL.add('select "DENOMINATION","ED","PRICE" FROM "sales" (:in)');
IBQuery1.Parambyname('in').AsString:='Майка';

...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32444972
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код, который был
Код: plaintext
1.
2.
3.
4.
ibquery1.SQL.Clear; 
ibquery1.SQL.add('select "DENOMINATION","ED","PRICE" FROM "sales" (:"in")'); 
IBQuery1.Params.CreateParam(ftString,'in',ptInput); 
IBQuery1.Parambyname('in').AsString:='Майка'; 
IBQuery1.ExecSQL;

Предлагаю попробовать
Код: plaintext
1.
2.
3.
4.
ibquery1.SQL.Clear; 
ibquery1.SQL.add('select "DENOMINATION","ED","PRICE" FROM "sales" (:in)'); 
IBQuery1.Prepare;
IBQuery1.Parambyname('in').AsString:='Майка'; 
IBQuery1.Open;


------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32445015
Andrew Kruchinin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Млин. Смятся будете ВСЕ :-))) Посмотрите названия параметров выходных у ХП и в запросе. Еще раз млин. Потянуло не туда.

автор
RETURNS(
OUT_D VARCHAR(40),
OUT_ED INTEGER,
OUT_PRICE BIGINT)


А запрос автор
select "DENOMINATION","ED","PRICE" FROM ....


И я тоже баран... Мда.

2sh'ors - выходные параметры должны быть указаны в запросе с ТЕМИ же именами что и в ХП. Вот собственно и вся проблема. Конечно "Column in unknown. ". А по поводу того запроса что приводил в селекте обычном - что такое text? Нужно было как я писал делать, т.е. дать явно значение в ковычках, тогда узнал бы точ процедура работает. Вот тебе Дельфя и ругается естественно - "что такое text".
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32445024
sh'ors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Последнее то же не работает, та же ошибка про параметр.

И что интересно пишу в запросе всякую хрень , а ругается на неизвестный параметр in example: 'select "DENOMINATвавIOED","PRICE" FROM "sales" (:in)'.
ерунда какая то.
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32445057
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>sh'ors

После прописки текста запроса и перед присвоением значения параметру надо
определить параметры параметра :)
А в запросе просто SELECT *
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32445133
sh'ors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Johnmen
разве этим, я не определяю параметр:
IBQuery1.params.CreateParam(ftString,'in',ptInput);
IBQuery1.Parambyname('in').AsString:='Майка';
тогда как определить параметр параметра?
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32445168
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>sh'ors

IBQuery1.SQL.Text:=
IBQuery1.ParamByName('in').ParamType:=
IBQuery1.ParamByName('in').DataType:=
IBQuery1.Parambyname('in').AsString:='Майка';
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32445199
sh'ors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Те же яйца тока вид сбоку.
...
Рейтинг: 0 / 0
Интересный вопрос.... про процедуры..
    #32445254
Andrew Kruchinin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ты ЗАПРОС переделал как я писал? Или все пытаешься поля получить из ХП несуществующие?
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Интересный вопрос.... про процедуры..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]