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

Вниз

Проблема с вызовом хранимых процедур   Найти похожие ветки 

 
Goida   (2003-11-20 22:24) [0]

Создал процедуру:

create procedure "ShowTableStudent" ( )
begin
select * from Student;
end

Пытаюсь ее вызвать с помощью StoredProc:
StoredProc.Open;
StoredProc.Close;
И при этом выдается сообщение, что неправильное количество параметров. Прямо не знаю что и делать.
Подскажите, кто знает в чем дело.

Заранее, СПАСИБО.


 
Johnmen   (2003-11-20 23:36) [1]

>...неправильное количество параметров

Ну да. А где же здесь параметры то ???

>Прямо не знаю что и делать.

Может стоит сделать над собой минимальное усилие и посмотреть наконец в документацию ?


 
Goida   (2003-11-21 10:38) [2]

Вместо того, чтобы злорадствовать, лучше бы ответил нормально :(

Параметров нет, я ее выбираю в StoredProc. Далее пытаюсь сделать StoredProc активным, но выдается сообщение, что неправильное кол-во актуальныч параметров :?


 
Johnmen   (2003-11-21 10:43) [3]

>Вместо того, чтобы злорадствовать

Не надо приписывать мне то, чего я даже не думал делать !

>лучше бы ответил нормально :(

Так я ответил. Нет у тебя параметров...


 
aVast   (2003-11-21 10:48) [4]

to Goida © (21.11.03 10:38) [2]
а что твоя процедура должна делать?


 
paul_k   (2003-11-21 11:29) [5]

как у тебя процедура подцеплена?
ShowTableStudent;1
или просто
ShowTableStudent
?


 
Goida   (2003-11-21 22:31) [6]

To Johnmen
Извини.
Я ее и вызываю, как мне кажется, без параметров.

To paul_k
ShowTableStudent - я ее выбрал из выпадающего списка. Там не было ShowTableStudent;1

Всем
А как работать с процедурами выбора (те, которые возвращают множество)? Только через Query, или всё-таки можно через StoredProc. Через последнее мне никак не удалось пока.


 
Johnmen   (2003-11-21 23:14) [7]

Да, через TQuery. TStoredProc предназначена не для этого.
И еще. Приведеная процедура вообще ничего не возвращает...:)


 
Goida   (2003-11-22 21:15) [8]

А как на счет заливки процедурой грида?
Видел, что использовали для этого именно StoredProc, а не Query. Только никак не получается у меня.


 
Vlad   (2003-11-22 21:24) [9]

TStoredProc предназначена для работы с хранимыми процедурами, в т.ч. с курсорными.
Если ХП возвращает курсор, то работа с TStoredProc аналогична работе с TQuery.
Работай себе на здоровье. Только сделай так чтобы твоя ХП возвращала курсор.


 
Goida   (2003-11-22 21:35) [10]

> Vlad ©
> Только сделай так чтобы твоя ХП возвращала курсор.

Для меня самое интересное - КАК? Я еще новичек БД. Маленький пример, пожалуйста.


 
Vlad   (2003-11-22 21:40) [11]

В SyBase не силен, не знаю :)


 
Goida   (2003-11-22 21:58) [12]

2Vlad ©
Мне все-равно. На любом, я разберусь.


 
Johnmen   (2003-11-22 23:51) [13]

>Goida © (22.11.03 21:58)

Не разберешься. Для разных СУБД реализация различна.
Может стоит посмотреть наконец в документацию ? По конкретной реализации диалекта SQL для Сибэйса.


 
Goida   (2003-11-23 00:04) [14]

>Johnmen ©
Мне и нужен пример, чтобы знать что искать. На Сибэйсе знаю как писать процедуры возвращающие множество, но они не те, которые нужны:
create procedure "Proc" ()
result (Field1 char(50), Field2 integer)
begin
select Name, Age from Student;
end


Она работает только из Query :(


 
Akni   (2003-11-24 11:43) [15]

в твоем примере

create procedure "Proc" ()
result (Field1 char(50), Field2 integer)
begin
select Name, Age from Student;
end

вызов из Delphi будет выглядеть так:
with StoredProc1 do
begin
StoredProcName:="Proc";
Open;
GetResults; // здесь возвращается набор данных
end;


"пройтись" по набору данных можно след. образом:

var Row, Column,i : integer;
Arr: OLEVariant;

Arr := VarArrayCreate([1, StoredProc1.RecordCount, 1, StoredProc1.FieldCount], varVariant);
Row:=1;
StoredProc1.First;
while not StoredProc1.EOF do
begin
Column := 1;
for i := 0 to StoredProc1.FieldCount - 1 do
begin
Arr[Row, Column] := FieldToVariant(StoredProc1.Fields[i]);
Inc(Column);
end;
Inc(Row);
StoredProc1.Next;
end;


 
Goida   (2003-11-25 06:59) [16]

> Akni ©
> вызов из Delphi будет выглядеть так:
> with StoredProc1 do
> begin
> StoredProcName:="Proc";
> Open;
> GetResults; // здесь возвращается набор данных
> end;

Все равно не работает :( Возвращает следующее при попытке открыть (Open):
General SQL error.
[Sybase][ODBC Driver][Adaptive Server Anywhere]Syntax error or access violation: Wrong number of parameters to function "Student_Show"

Вот так вот. И больше ничего. Что делать????? :-*


 
Oleg_em   (2003-11-25 10:00) [17]

а зачем ваще использовать процедуры для получения списка ?
есть же вьюхи на случай если нужно получить данные из разных таблиц


 
Akni   (2003-11-25 11:50) [18]

А как параметры описаны?
В приведенном тобой примере вообще параметров быть не должно - входных в процедуре нет, а набор данных возвращается не в параметрах, а в StoredProc1.Fields. (надеюсь, что понятно выразилась)

З.Ы. В приведенном мной примере используется TStoredProcedure и соотв. доступ в ВД через BDE


 
Goida   (2003-11-25 19:15) [19]

> Akni ©
Процедура действительно без параметров. Но когда я ее выбираю из списка процедур в Design-Time, то в Params появляются, все-равно, два параметра с типом ptOutput.


 
Akni   (2003-11-26 12:12) [20]

Попробуй тогда взять ADO-Компоненты, только что с ними попробовала - параметры в списке не появляются, процедура выполняется как положено.


 
Gold   (2003-12-09 12:58) [21]

>>ALL
Уважаемые, и что же ни кто не знает??
Та же проблема.
>>Goida
Как процедура работает из Query



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

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

Наверх





Память: 0.49 MB
Время: 0.014 c
14-12143
KILLER_ABV
2003-12-04 11:58
2004.01.05
Нужны скины для компонента SkinEngine


1-11926
DimaK
2003-12-19 23:05
2004.01.05
RichEdit


14-12136
craZy kurt
2003-12-11 19:02
2004.01.05
Бесследное удаление файлов


1-11888
deltoro
2003-12-10 02:44
2004.01.05
Нужна помощь в написании программы, часть учебного проекта


1-11857
IgorK
2003-12-18 16:48
2004.01.05
RichTextEdit и Word RTF файл несовместимы?





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