Вниз
Скачать: CL | DM;

Возварщение параметров хранимой процедуры (MSSQL+DBExpress)   Найти похожие ветки 

← →
Asker ©   (2003-07-29 13:32) [0]

Как получить результат выполнения хранимой процедуры в Deplhi из MSSQL используется DBExpress:

Моя процедура:
CREATE PROCEDURE dbo.nextoperatind
@IND INTEGER OUTPUT
AS
begin tran
SELECT @IND=MAX(operat) from idx WITH (TABLOCKX)
update idx set operat=@IND+1
commit tran
GO

пробовал:
EXECUTE NEXTOPERATIND :@IND OUTPUT;
- в результате получаю 0 вместо занчения
(или DECLARE @IND INTEGER;
EXECUTE NEXTOPERATIND @IND OUTPUT;
SELECT IND = @IND)

EXEC sp_serveroption SRV , "data access", "true";
SELECT * FROM OPENQUERY(SRV,"exec ballon.dbo.nextoperatind ")
- выдает, что нужен мой объявленный параметр @IND

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

При использовании TSQLStoredProc, если в ней задать процедуру nextoperatind и ручками прописать параметр (не видит сама она процедур сервера :-( ) то выдаст выход за границы диапазона параметра @IND


← →
KSergey ©   (2003-07-29 13:53) [1]

Все делал только на ADO, но подозреваю, что одно и то же.

При использовании TSQLStoredProc, если в ней задать процедуру nextoperatind и ручками прописать параметр (не видит сама она процедур сервера :-( ) то выдаст выход за границы диапазона параметра @IND

Наверное, надо с типом параметра разобраться аккуратнее и не забыть описать, что он выходной из процедуры.

пробовал:
EXECUTE NEXTOPERATIND :@IND OUTPUT;
- в результате получаю 0 вместо занчения


Это я что-то вовсе не понимаю, так только параметры из программы можно впихать

(или DECLARE @IND INTEGER;
EXECUTE NEXTOPERATIND @IND OUTPUT;
SELECT IND = @IND)


А) убрать тчк с зпт совсем
Б) последнюю можно переписать как SELECT @IND, правда тогда имени поля не будет, но можно обратиться по индексу


← →
Asker ©   (2003-07-29 14:10) [2]

Параметры на ней прописаны нормально, он же ругается просто при попытке оращения к нулевому параметру.

Да без точек с запятой - это то же самое

А насчет SELECT @IND я не понял: можно в виде примера?


← →
KSergey ©   (2003-07-29 14:25) [3]

Asker © (29.07.03 14:10)
Параметры на ней прописаны нормально, он же ругается просто при попытке оращения к нулевому параметру.


Ну если нормально...

Да без точек с запятой - это то же самое

В смысле тоже самое? Хотя я все время путаюсь с этими нюансами именно дельфийского написания SQL текста (не пинать!), но там есть вроде какие-то тонкости.. Знаю только, что я никогда не пишу там тчк с зпт.
Совет: попробуйте все эти скрипты отладить в Query Analizer"е. Там проще найти ошибки, да и дельфи "не будет виновата".

А насчет SELECT @IND я не понял: можно в виде примера?

Мысли в слух.


← →
Asker ©   (2003-07-29 14:39) [4]

Да я тоже частенько путаюсь с нюансами написания SQL текста в различных БД... В Query Analizer все прекрасно проходит. Это в дельфи не возвращаестя набор данных, если в одном запросе написано более одного оператора.(хотя сами команды прекрасно выполняются)


← →
KSergey ©   (2003-07-29 14:45) [5]

Asker © (29.07.03 14:39)
Это в дельфи не возвращаестя набор данных, если в одном запросе написано более одного оператора.(хотя сами команды прекрасно выполняются)


Наглая ложь ;)
Я так делал, повторять сейчас лень.
К сожалению, проблем в вашем коде не вижу, правда здесь нет куска кода программы: как это все вызывается?


← →
Asker ©   (2003-07-30 06:53) [6]

Query.Open;
или StoredProc.ExecProc :-)

Если работать через АДО, то действительно все работает(сам пробовал) - и через запрос и через хранимую процедуру. Глюки начинаются, если работать через DBExpress.



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.015 c
14-81909
VEG
2003-07-25 19:23
2003.08.25
Сегодня протестировал устойчивость XP о полной!


3-81584
Хозявин М
2003-07-31 21:50
2003.08.25
Запись БД на диск


4-82002
VD601
2003-06-22 21:02
2003.08.25
Что за сообщение $0009?


3-81533
Berezne
2003-07-31 13:14
2003.08.25
Как организовать фильтрацию в DBGrid !!!


3-81528
rosl
2003-08-01 08:32
2003.08.25
сортировка




   Наверх